IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Ajouter option dans un select de ma fenêtre parente


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut Ajouter option dans un select de ma fenêtre parente
    Bonjour à tous.

    J'essaie de faire fonctionner sur Internet explorer cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    function setExistingDocListValues(){
    	var obj = window.opener.document.getElementById("idListExistingDocs");
    	var tabSelected = new Array();
    	var checkboxes = document.getElementsByName("selectedRes");
    	for (i=0; i < checkboxes.length; i++){
    		if(checkboxes[i].checked == true){
    			tabSelected.push(checkboxes[i].value);
    		}
    	}
     
    	if (tabSelected != null && tabSelected.length > 0) {
    		obj.options.length=0;
    		for ( var i = 0; i < tabSelected.length; i++) {
    			var valeur = tabSelected[i];
    			var  libelle = document.getElementById(valeur).value;
    			var option = new Option(libelle,valeur);
    			obj[obj.options.length]=option;
    		}
    	}
    }
    Le besoin est le suivant, j'ai dans ma page principale un formulaire de saisie.
    Un élément select est présent dans cette page : son id est "idListExistingDocs".
    Je veux remplir cette liste avec une sélection parmi les résultats d'une recherche.

    Cette recherche est lancée dans une nouvelle page par un window.open.
    J'ai un formulaire de recherche, et ensuite j'ai une liste de résultat. L'utilisateur sélectionne parmi les résultats ceux qu'il veut ajouter à son select.

    Sur Firefox, une fois que j'ai validé ma sélection (i.e. appelé la fonction ci-dessus), j'ai bien dans ma page parente la ligne qui est rajoutée, comme je le souhaite.

    Par contre sur IE, il refuse de faire ce que je veux et me dis :
    "Cet objet ne gère pas cette propriété ou cette méthode", en référencant la ligne : "obj[obj.options.length]=option;"

    Quelqu'un est-il en mesure de me dire si je m'y prends comme un manche?

    merci d'avance

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    option et options étant des termes réservés en Javascript, il serait judicieux de nommer tes variables autrement.
    Dis-nous si le problème persiste après (très possible) ...

    Vérifie également que tu n'as pas des id ou name correspondant à ces variables (un id="option" ou id="options"). En effet, une syntaxe préhistorique autorisait, sous IE, à faire référence aux objet directement via leur id (ex : un_id.value). Ajouté à ça qu'IE confond name et id ....

    A+

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut
    J'ai en effet toujours le même problème. Après vérification, pas de mot-clé surchargé dans mes formulaires.

    Là où je suis dépité, c'est que pour mes tests j'ai ajouté en dur dans mon select cible 5 valeurs, et le script me supprime bien ces valeurs par le biais du :
    "obj.options.length=0;"

    Pour un confort de lecture, je poste le code modifié selon tes conseils:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    function setExistingDocListValues(){
    	var monSelectPageParente = window.opener.document.getElementById("idListExistingDocs");
    	var tabSelected = new Array();
     
    	var checkboxes = document.getElementsByName("selectedRes");
    	for (i=0; i < checkboxes.length; i++){
    		if(checkboxes[i].checked == true){
    			tabSelected.push(checkboxes[i].value);
    		}
    	}
     
    	if (tabSelected != null && tabSelected.length > 0) {
    		monSelectPageParente.options.length=0;
    		for ( var i = 0; i < tabSelected.length; i++) {
    			var valeur = tabSelected[i];
    			var  libelle = document.getElementById(valeur).value;
    			var monOption = new Option(libelle,valeur);
    			monSelectPageParente[monSelectPageParente.options.length]=monOption;
    		}
    	}
     
    }

    Merci en tout cas pour cette piste

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Un détail mais sait-on jamais : on ne déclare pas les variables dans une boucle (sinon, multi-déclaration).
    Essaye de déclarer ces 3 variables en début de fonction ...
    Pour l'instant, je ne vois rien d'autre

    A+

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut
    Malheureusement cela n'a pas résolu mon problème.

    J'ai tenté d'utiliser la librairie mootools au passage, dernière version, en surchargeant le $ comme recommandé.

    Sur firefox ca fonctionne encore quand en lieu et place de ma ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monSelectPageParente[monSelectPageParente.options.length]=monOption;
    Je mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monSelectPageParente.grab(monOption);
    Mais toujours la même erreur pour IE (7,8)
    Allez, des idées quelqu'un?

    Merci pour tes réponses en tout cas E.Bzz

  6. #6
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Bonjour,

    tu peux tenter d'utiliser la fonction add comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    if (tabSelected != null && tabSelected.length > 0) {
    	monSelectPageParente.options.length=0;
    	for ( var i = 0; i < tabSelected.length; i++) {
    		var valeur = tabSelected[i];
    		var  libelle = document.getElementById(valeur).value;
    		var monOption = new Option(libelle,valeur);
     
    		try {
    			monSelectPageParente.add(monOption, null); // Standard compliant
    		}
    		catch (e) {
    			monSelectPageParente.add(monOption); // IE Only
    		}
    	}
    }
    Malheureusement, j'ai pas IE pour tester
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut
    J'ai réussi!!

    La façon dont je créé mon Option à priori ne plait pas à IE!

    Grâce à la méthode add que tu m'a fournie j'ai finalisé un bout de code fonctionnel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    	if (tabSelected != null && tabSelected.length > 0) {
    		monSelectPageParente.options.length=0;
    		for ( var i = 0; i < tabSelected.length; i++) {
    			valeur = tabSelected[i];
    			libelle = document.getElementById(valeur).value;
    			monOption = window.opener.document.createElement('option');
    			monOption.text = libelle;
    			monOption.value = valeur;
    			//monSelectPageParente[monSelectPageParente.options.length]=monOption;
    			try {
    				monSelectPageParente.add(monOption,null); // Standard compliant
    			}
    			catch (e) {
    				monSelectPageParente.add(monOption); // IE Only
    			}
    		}
    	}
    Merci pour vos contributions!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ajout dynamique des option dans un select
    Par rochdi123 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/10/2009, 20h30
  2. [DOM] Ajout d'option dans un select : sous IE6
    Par ShadowSama dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/03/2009, 22h00
  3. Réponses: 9
    Dernier message: 29/05/2006, 14h30
  4. Selectionner une option dans un select
    Par _beber85 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/04/2006, 16h48
  5. [html/css]coloration des options dans un select
    Par the_edge dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 04/05/2005, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo