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 :

[DOM] Radio button impossible à cocher sous IE


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Points : 311
    Points
    311
    Par défaut [DOM] Radio button impossible à cocher sous IE
    Bonjour,

    Je récupère une info à partir d'une base. Cette info pouvant prendre 3 états différents et exclusifs, elle est représentée dans le formulaire par des radio buttons.

    Ces radio buttons sont générés en DOM, car une liste déroulante permet d'ajouter dynamiquement via une fonction JS des lignes au tableau.

    En fonction de l'état pour la personne sélectionnée, l'un des radio doit être coché.

    Pour cela, j'appelle la fonction suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function checkAnnuaire( unId, nature ) {
    		var nom = "chkContact_" + unId;
    		var indice = nature - 1;
    		document.forms[0].elements[nom][indice].checked=true;
    	}
    Elle fonctionne parfaitement sous Firefox et IE, les radio cochés sont les bons.
    En revanche, sous IE, impossible de changer le radio qui est coché. (Sous Firefox aucun problème.)

    Quelqu'un a une idée ?

    Merci d'avance,

    *.Har(d)t

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms[0].elements[nom][indice].checked="checked" ;

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Points : 311
    Points
    311
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms[0].elements[nom][indice].checked="checked" ;
    C'était ce que j'avais mis a départ. J'ai remplacé par "true" suite à la lecture d'un tuto.
    Je viens de retester avec "checked" par acquit de conscience, mais ça ne fonctionne pas non plus sous IE (sous FF nickel).

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    ton element il à un name ???


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElemensByName[nom][indice].checked="checked" ;

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Points : 311
    Points
    311
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    ton element il à un name ???


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElemensByName[nom][indice].checked="checked" ;
    Oui, le name est fait par la fonction qui créé la ligne de tableau contenant les radios.
    Il est du type "chkContact_xx", où xx représente un nombre correspondant à l'id dans la base.

    Ainsi, chaque groupe de 3 radios sur la ligne d'une personne porte le même nom.

    Voici l'extrait de code de la fonction générant les radio:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for( i = 1 ; i < 4 ; i++ ) {
    	inputNode = document.createElement("input");
    	inputNode.type = "radio";
    	inputNode.name = "chkContact_" + document.forms[0].elements[0].options[unId].value;
    	inputNode.id = "chkContact_" + document.forms[0].elements[0].options[unId].value;
    	inputNode.value = i;
    	tdNode = document.createElement("td");
    	tdNode.appendChild(inputNode);
    	trNode.appendChild(tdNode);
    }
    document.getElementById("listeAnnuaire").appendChild(trNode);
    L'accès à ces radios se fait proprement en apparence, puisqu'ils sont bien cochés en fonction de ce qu'il y a dans la base. C'est simplement sous IE, quand je veux cocher un autre radio dans un groupe, celui qui est déjà coché ne se décoche pas (et celui que je veux cocher ne se coche pas.)

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    le problème vient de l'attribution dynamique du name

    http://www.developpez.net/forums/sho...d.php?t=489641

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Points : 311
    Points
    311
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    le problème vient de l'attribution dynamique du name

    http://www.developpez.net/forums/sho...d.php?t=489641
    Merci pour ton aide SpaceFrog, ça a l'air de fonctionner à peu près. Je vais tester plus avant pour éliminer toute mauvaise surprise, mais ça me semble bien être l'origine du problème.

    Solution pour moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for( i = 1 ; i < 4 ; i++ ) {
    	var nom = "chkContact_" + document.forms[0].elements[0].options[unId].value;
    	inputNode = document.createElement("<input name='" + nom + "' />");
    	inputNode.type = "radio";
    	inputNode.id = "chkContact_" + document.forms[0].elements[0].options[unId].value;
    	inputNode.value = i;
    	tdNode = document.createElement("td");
    	tdNode.appendChild(inputNode);
    	trNode.appendChild(tdNode);
    }
    document.getElementById("listeAnnuaire").appendChild(trNode);

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    il te faudra tout de même différentier IE et autres ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    inputNode = (document.all)?document.createElement("<input name='" + nom + "' />"):document.createElement("input") ;

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

Discussions similaires

  1. [XUL] cocher un radio button en javascript
    Par dmganges dans le forum XML/XSL et SOAP
    Réponses: 14
    Dernier message: 25/10/2013, 14h46
  2. [Windows Phone 7] empecher de cocher deux radio button situés dans deux stack panels différents
    Par glennog dans le forum Windows Phone
    Réponses: 3
    Dernier message: 11/04/2013, 14h15
  3. Réponses: 4
    Dernier message: 22/04/2011, 16h17
  4. cocher dans un radio button
    Par yakusa77 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 05/12/2008, 11h58
  5. Cases à cocher sous VBA
    Par dran dans le forum Général VBA
    Réponses: 4
    Dernier message: 15/11/2004, 22h50

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