Accueil > Forum > > > > creer des option dans une liste deroulate à la volée
creer des option dans une liste deroulate à la volée
mercredi 5 mars 2003 à 11:51:49 |
creer des option dans une liste deroulate à la volée

axl63800
|
Bon je vais essayer d'etre le plus clair possible En gros j'ai un formulaire pour remplir une base de donnée et qui va recolter des infos dans celle ci pour les menu deroulant. a coté des menu deroulant j'ai un lien qui m'ouvre une popup pour rajouter des element a la liste deroulante. Le problème c'est que je voudrais mettre a jour la liste déroulante à la volée juste apres avoir fait mon insertion dans la base! j'ai essayer le code suivant : function reload(id,nom){ var o = new Option(id,nom); window.opener.frmFormCollec.lstEditeur.options[window.opener.frmFormCollec.lstEditeur.options.length]=o; //window.opener.location = "./admin.php?sLienAdmin=AdmCollec&sAction=collec&btnAction=nouveau&btnAction=<?echo $btnAction;?>&lstChoix=<?echo $lstChoix;?>"; window.close(); } Avec comme id la valeur de mon choix dans la liste et nom ce qui doit s'afficher Le problème c'est que quand j'execute ca ie me renvoie une erreur javascript me disant que le serveur a fait une exception dans j'imagine qu'il doit y avoir une erreur mais j'arrive pas a voir laquelle!! Merci de m'aider please!!!!
|
|
jeudi 6 mars 2003 à 08:22:47 |
Re : creer des option dans une liste deroulate à la volée

jeca
|
Ci-dessous, copie d'un mail envoyé il y a plusieurs mois à propos d'un problême tout à fait similaire :
Je vais essayer de t'expliquer le plus clairement possible le problème que j'ai eu, et la manière dont je l'ai résolu. Ensuite, tu extrapoleras en fonction du tien. Je vais raccourcir car le même problème se produit plusieurs fois dans le formulaire. Il s'agit d'un BDD destinée à enregistrer des livres, et donc des formulaires permettant d'enrichir les tables. LES TABLES livres : Id, Titre, Id_Auteur auteurs : Id, Nom, Prenom LE FORMULAIRE livres : Champ "titre" type "text" Champ "auteur" type "select" Champ "Créer un auteur" type "button" Champ "valider" type "submit" Champ "supprimer" type "submit" Champ "divers" type "hidden" auteurs(popup) : Champ "nom" type "text" Champ "prenom" type "text" Champ "valider" type "submit" Champ "annuler" type "button" (fermeture de la popup sans action) Champ "divers" type "hidden" LE BUT Je voulais donc, lorsque je crée un livre, pouvoir crée un auteur dans un formulaire d'une popup, s'il n'est pas dans le "select", le soumettre afin mettre à jour la table "auteurs", fermer automatiquement la popup après soumission, revenir dans ma fenêtre appelante (opener) sans avoir perdu les infos déjà saisies, sans rafraîchir et avoir ajouté dans le "select" l'auteur nouvellement créé, reclassé par ordre alpha. Après divers essais, j'ai vu qu'il m'était impossible d'ajouter une "option" dans le "select" à partir de la popup. LE PRINCIPE ADOPTE Lorsque je clique sur "créer un auteur", j'ouvre un popup. Lorsque le formulaire de la popup est soumis, php effectue l'enregistrement dans la table "auteurs", je récupère la nouvelle clé par une seconde requête, je la mets dans le champ caché "divers" et je relance la popup. Mais l'utilisateur ne la voit pas car il y a un event-handler (onload) dans le <body> qui va tester si le champ caché est renseigné. S'il l'est, la fonction va : écrire dans le champ caché de la fenêtre appelante la clé, le nom, le prénom de l'auteur dans le format "cle,nom,prenom". fermer la popup. Lorsque je reviens sur la fenêtre appelante, un event-handler (onfocus) dans le <body> va effectuer le reste si le champ caché est renseigné : récupérer le contenu texte du "select" dans un tableau, ajouter le nouvel auteur dans le tableau, trier le tableau (tri à bulle, car il y a peu d'enreg.), réinjecter tous ceci dans le "select", redonner le focus au "select". A part la soumission, tout le reste est réalisé en javascript. Le texte est long, mais l'exécution est tout à fait insensible pour l'utilisateur. Je ne suis pas sûr que tout fonctionne correctement avec NN, mais c'est bon avec IE. J'ajouterai qu'il y a peut-être une solution plus simple, mais je ne l'ai pas trouvée. Si tu trouves, je suis preneur.
Cordialement
jc
------------------------------- Réponse au message : -------------------------------
> Bon je vais essayer d'etre le plus clair possible > > En gros j'ai un formulaire pour remplir une base de donnée et qui va recolter des infos dans celle ci pour les menu deroulant. a coté des menu deroulant j'ai un lien qui m'ouvre une popup pour rajouter des element a la liste deroulante. > > Le problème c'est que je voudrais mettre a jour la liste déroulante à la volée juste apres avoir fait mon insertion dans la base! > > j'ai essayer le code suivant : > > function reload(id,nom){ > var o = new Option(id,nom); > window.opener.frmFormCollec.lstEditeur.options[window.opener.frmFormCollec.lstEditeur.options.length]=o; > //window.opener.location = "./admin.php?sLienAdmin=AdmCollec&sAction=collec&btnAction=nouveau&btnAction=<?echo $btnAction;?>&lstChoix=<?echo $lstChoix;?>"; > window.close(); > } > > Avec comme id la valeur de mon choix dans la liste et nom ce qui doit s'afficher > > Le problème c'est que quand j'execute ca ie me renvoie une erreur javascript me disant que le serveur a fait une exception dans j'imagine qu'il doit y avoir une erreur mais j'arrive pas a voir laquelle!! > > Merci de m'aider please!!!!
|
|
jeudi 6 mars 2003 à 09:38:03 |
Re : creer des option dans une liste deroulate à la volée

axl63800
|
alors ta reponse est presque parfaite et je t'en remercie!!
Du reste, j'ai un chtit probleme concernant le fait de réinjecter le tableau dans le select en fait j'ai meme pas tout compris a cette histoire de tableau parceque j'ai l'impression que tu stocke les données de ta table dans un tableau en javascript mais je vois pas trop comment d'une part et je ne sais pas comment injecter des données dans un select (du code serait le bienvenue!!)
Merci encore pour ta reponse et pour la suivante j'espere
------------------------------- Réponse au message : -------------------------------
> Ci-dessous, copie d'un mail envoyé il y a plusieurs mois à propos d'un problême tout à fait similaire : > > Je vais essayer de t'expliquer le plus clairement possible le problème > que j'ai eu, et la manière dont je l'ai résolu. Ensuite, tu extrapoleras > en fonction du tien. Je vais raccourcir car le même problème se produit > plusieurs fois dans le formulaire. > > Il s'agit d'un BDD destinée à enregistrer des livres, et donc des formulaires > permettant d'enrichir les tables. > > LES TABLES > livres : Id, > Titre, > Id_Auteur > > auteurs : Id, > Nom, > Prenom > > LE FORMULAIRE > livres : > Champ "titre" type "text" > Champ "auteur" type "select" > Champ "Créer un auteur" type "button" > Champ "valider" type "submit" > Champ "supprimer" type "submit" > Champ "divers" type "hidden" > > auteurs(popup) : > Champ "nom" type "text" > Champ "prenom" type "text" > Champ "valider" type "submit" > Champ "annuler" type "button" (fermeture de la popup sans action) > Champ "divers" type "hidden" > > LE BUT > Je voulais donc, lorsque je crée un livre, pouvoir crée un auteur dans un formulaire d'une popup, s'il n'est pas dans le "select", le soumettre afin mettre à jour la table "auteurs", fermer automatiquement la popup après soumission, revenir dans ma fenêtre appelante (opener) sans avoir perdu les infos déjà saisies, sans rafraîchir et avoir ajouté dans > le "select" l'auteur nouvellement créé, reclassé par ordre > alpha. > > Après divers essais, j'ai vu qu'il m'était impossible d'ajouter une "option" dans le "select" à partir de la popup. > > LE PRINCIPE ADOPTE > Lorsque je clique sur "créer un auteur", j'ouvre un popup. > Lorsque le formulaire de la popup est soumis, php effectue > l'enregistrement dans la table "auteurs", je récupère la nouvelle clé par une seconde requête, je la mets dans le champ caché "divers" et je relance la popup. Mais l'utilisateur ne la voit pas car il y a un event-handler (onload) dans le <body> qui va tester si le champ caché est renseigné. S'il l'est, la fonction va : > écrire dans le champ caché de la fenêtre appelante la clé, le nom, le prénom de l'auteur dans le format "cle,nom,prenom". > fermer la popup. > > Lorsque je reviens sur la fenêtre appelante, un event-handler (onfocus) dans le <body> va effectuer le reste si le champ caché est renseigné : > récupérer le contenu texte du "select" dans un tableau, > ajouter le nouvel auteur dans le tableau, > trier le tableau (tri à bulle, car il y a peu d'enreg.), > réinjecter tous ceci dans le "select", > redonner le focus au "select". > > A part la soumission, tout le reste est réalisé en javascript. > Le texte est long, mais l'exécution est tout à fait insensible pour l'utilisateur. > > Je ne suis pas sûr que tout fonctionne correctement avec NN, mais c'est bon avec IE. > > J'ajouterai qu'il y a peut-être une solution plus simple, mais je ne l'ai pas trouvée. Si tu trouves, je suis preneur. > > Cordialement > > jc
|
|
jeudi 6 mars 2003 à 10:18:44 |
Re : creer des option dans une liste deroulate à la volée

jeca
|
Ci-dessous les 2 fonctions que j'utilise. Lis les commentaires car il y a une petite différence avec ce que je t'ai écrit dans le 1er message : le contenu du champ "hidden".
Il y a sûrement de l'optimisation à faire car cela date de mes débuts en javascript, en conséquence, je me pardonne.
//-- fonction appelée par l'évènement "onload" de <body> ---------------- function insere() { //-- optioncache = champ renseigné par la popup ----------- //-- il contient : nom du select, texte de l'option, value de l'option ---------- //-- séparés par une virgule ------------------------- var valeur = document.FormArticle.optioncache.value; if (valeur == "") return; tableau = valeur.split(","); //-- amettreajour = nom du select à modifier ----------- var amettreajour = tableau[0]; var nom = tableau[1]; var cle = tableau[2]; var indice = eval("document.FormArticle."+amettreajour+".length"); var nouveau = new Option(nom, cle); commande = "document.FormArticle."+amettreajour+".options[indice] = nouveau"; eval(commande); document.FormArticle.optioncache.value = ""; tri(amettreajour, nom); }
function tri(amettreajour, nom) { balise = eval("document.FormArticle."+amettreajour); for (var i = 0; i < balise.length; i++) { for (var j = i + 1; j <= maxi ; j++) { if ((balise.options[i].text).toUpperCase() > (balise.options[j].text).toUpperCase()) { var texte_temp = balise.options[i].text; var valeur_temp = balise.options[i].value; balise.options[i].text = balise.options[j].text; balise.options[i].value = balise.options[j].value; balise.options[j].text = texte_temp; balise.options[j].value = valeur_temp; } } } sel_indice = balise.selectedIndex; sel_valeur = balise.options[sel_indice].text; if (nom.toUpperCase() < sel_valeur.toUpperCase()) { balise.options[sel_indice].selected = false; balise.options[sel_indice + 1].selected = true; } }
Cordialement
jc
------------------------------- Réponse au message : -------------------------------
> alors ta reponse est presque parfaite et je t'en remercie!! > > Du reste, j'ai un chtit probleme concernant le fait de réinjecter le tableau dans le select en fait j'ai meme pas tout compris a cette histoire de tableau parceque j'ai l'impression que tu stocke les données de ta table dans un tableau en javascript mais je vois pas trop comment d'une part et je ne sais pas comment injecter des données dans un select (du code serait le bienvenue!!) > > Merci encore pour ta reponse et pour la suivante j'espere > > > > ------------------------------- > Réponse au message : > ------------------------------- > > > Ci-dessous, copie d'un mail envoyé il y a plusieurs mois à propos d'un problême tout à fait similaire : > > > > Je vais essayer de t'expliquer le plus clairement possible le problème > > que j'ai eu, et la manière dont je l'ai résolu. Ensuite, tu extrapoleras > > en fonction du tien. Je vais raccourcir car le même problème se produit > > plusieurs fois dans le formulaire. > > > > Il s'agit d'un BDD destinée à enregistrer des livres, et donc des formulaires > > permettant d'enrichir les tables. > > > > LES TABLES > > livres : Id, > > Titre, > > Id_Auteur > > > > auteurs : Id, > > Nom, > > Prenom > > > > LE FORMULAIRE > > livres : > > Champ "titre" type "text" > > Champ "auteur" type "select" > > Champ "Créer un auteur" type "button" > > Champ "valider" type "submit" > > Champ "supprimer" type "submit" > > Champ "divers" type "hidden" > > > > auteurs(popup) : > > Champ "nom" type "text" > > Champ "prenom" type "text" > > Champ "valider" type "submit" > > Champ "annuler" type "button" (fermeture de la popup sans action) > > Champ "divers" type "hidden" > > > > LE BUT > > Je voulais donc, lorsque je crée un livre, pouvoir crée un auteur dans un formulaire d'une popup, s'il n'est pas dans le "select", le soumettre afin mettre à jour la table "auteurs", fermer automatiquement la popup après soumission, revenir dans ma fenêtre appelante (opener) sans avoir perdu les infos déjà saisies, sans rafraîchir et avoir ajouté dans > > le "select" l'auteur nouvellement créé, reclassé par ordre > > alpha. > > > > Après divers essais, j'ai vu qu'il m'était impossible d'ajouter une "option" dans le "select" à partir de la popup. > > > > LE PRINCIPE ADOPTE > > Lorsque je clique sur "créer un auteur", j'ouvre un popup. > > Lorsque le formulaire de la popup est soumis, php effectue > > l'enregistrement dans la table "auteurs", je récupère la nouvelle clé par une seconde requête, je la mets dans le champ caché "divers" et je relance la popup. Mais l'utilisateur ne la voit pas car il y a un event-handler (onload) dans le <body> qui va tester si le champ caché est renseigné. S'il l'est, la fonction va : > > écrire dans le champ caché de la fenêtre appelante la clé, le nom, le prénom de l'auteur dans le format "cle,nom,prenom". > > fermer la popup. > > > > Lorsque je reviens sur la fenêtre appelante, un event-handler (onfocus) dans le <body> va effectuer le reste si le champ caché est renseigné : > > récupérer le contenu texte du "select" dans un tableau, > > ajouter le nouvel auteur dans le tableau, > > trier le tableau (tri à bulle, car il y a peu d'enreg.), > > réinjecter tous ceci dans le "select", > > redonner le focus au "select". > > > > A part la soumission, tout le reste est réalisé en javascript. > > Le texte est long, mais l'exécution est tout à fait insensible pour l'utilisateur. > > > > Je ne suis pas sûr que tout fonctionne correctement avec NN, mais c'est bon avec IE. > > > > J'ajouterai qu'il y a peut-être une solution plus simple, mais je ne l'ai pas trouvée. Si tu trouves, je suis preneur. > > > > Cordialement > > > > jc >
|
|
jeudi 6 mars 2003 à 10:54:57 |
Re : creer des option dans une liste deroulate à la volée

axl63800
|
MERCI BEAUCOUP c'est super agréable de tomber sur des reponses aussi précises et adaptées a son problème!! merci de m'eviter des heures de recherche!!
ENCORE MERCI
------------------------------- Réponse au message : -------------------------------
> Ci-dessous les 2 fonctions que j'utilise. Lis les commentaires car il y a une petite différence avec ce que je t'ai écrit dans le 1er message : le contenu du champ "hidden". > > Il y a sûrement de l'optimisation à faire car cela date de mes débuts en javascript, en conséquence, je me pardonne. > > //-- fonction appelée par l'évènement "onload" de <body> ---------------- > function insere() > { > //-- optioncache = champ renseigné par la popup ----------- > //-- il contient : nom du select, texte de l'option, value de l'option ---------- > //-- séparés par une virgule ------------------------- > var valeur = document.FormArticle.optioncache.value; > if (valeur == "") return; > > tableau = valeur.split(","); > //-- amettreajour = nom du select à modifier ----------- > var amettreajour = tableau[0]; > var nom = tableau[1]; > var cle = tableau[2]; > var indice = eval("document.FormArticle."+amettreajour+".length"); > var nouveau = new Option(nom, cle); > commande = "document.FormArticle."+amettreajour+".options[indice] = nouveau"; > eval(commande); > document.FormArticle.optioncache.value = ""; > tri(amettreajour, nom); > } > > function tri(amettreajour, nom) > { > balise = eval("document.FormArticle."+amettreajour); > for (var i = 0; i < balise.length; i++) > { > for (var j = i + 1; j <= maxi ; j++) > { > if ((balise.options[i].text).toUpperCase() > (balise.options[j].text).toUpperCase()) > { > var texte_temp = balise.options[i].text; > var valeur_temp = balise.options[i].value; > balise.options[i].text = balise.options[j].text; > balise.options[i].value = balise.options[j].value; > balise.options[j].text = texte_temp; > balise.options[j].value = valeur_temp; > } > } > } > sel_indice = balise.selectedIndex; > sel_valeur = balise.options[sel_indice].text; > if (nom.toUpperCase() < sel_valeur.toUpperCase()) > { > balise.options[sel_indice].selected = false; > balise.options[sel_indice + 1].selected = true; > } > } > > Cordialement > > jc > >
|
|
Cette discussion est classée dans : liste, id, window, option, volée
Répondre à ce message
Sujets en rapport avec ce message
option selectionné [ par ypothier ]
ESt-ce que quelqu'un connait un moyen pour que quand j'ajoute une option dans un combo box pour qu'il soit sélectionné et non qu'il soit le premier da
pb avec un option dans un <select> [ par daeron ]
Bonjour, j'aimerai savoir pourquoi j'ai une erreur dans mon code. function SendValues(strprod) { window.opener.document.theForm.field_3.options[window
ID dans un new option [ par FREESLY ]
Bonjour, je voudrais savoir si on peut definir un id quand on utilise la fonction pour creer des options dans un select ?Bon ca marche comme ca :new O
sélection d'une option identifiée -->liste déroulante [ par tousimages ]
Mon objectif est de sélectionner automatique dans les listes déroulantes l'option préalablement enregistrée.Je m'explique :
Afficher une option dans un select [ par viggen76 ]
Bonjour, J'ai une liste déroulante (select) dans une page. Cette liste contient des éléments, disons une dizaine. Mais la liste n'a une capacité d'af
Liste qui affiche un calque [ par lordclaymore ]
Bonjour, je travaille sur un site et j'aimerais avoir un menu déroulant qui ferait apparaitre un calque précis. Ex. Si je sélectionne "Questions" le
Option d'un Select [ par oxamafia ]
bonjour mesdames, messieurs,mon problème est assez simple dans la théorie disons mais pas simple à réaliser...je m'explique:j'ai dans un formulaire un
SetTimeout [ par Atorina ]
Bonjour,J'ai fait un code qui, lorsqu'on fait un clic droit, affiche un menu personnalisé. J'ai voulu faire un setTimeout pour que le menu se ferme au
Comment récupéré l'id (ou etiquette) d'une liste déroulante ? [ par converse ]
Bonjour à tous,Je gallère un peu depuis hier. Je vais tenter d'expliquer simplement ma question.Je souhaite envoyer via une liste déroulante dans un f
if qui fonctionne pas [ par jorrie ]
Bonjours, jai une fonction en javascript qui ne fonctionne pas, a cahque fois il rentre dans la 1ere condition meme si je force l'etape="Etudes prélim
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Forum
UTILISER UN .JSUTILISER UN .JS par zaikoe
Cliquez pour lire la suite par zaikoe
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|