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 :

Script ne fonctionne pas sous IE check de bouton radio


Sujet :

JavaScript

  1. #21
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Euh sinon, une version de getRadios qui utilise un hash pour éviter les doublons :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function getRadios(form) {
    	var c = form.getElementsByTagName('input');
    	var a = {};
    	for (var i = 0, input; input = c.item(i); i++) {
    		if (input.type == 'checkbox') {
    			a[input.name] = input.name;
    		};
    	};
    	return a;
    };

    À part ça, le risque de conflit de noms est nul car Bastian n’utilise que des noms redéfinis dans la portée locale : form est un paramètre, et radio est une variable locale.
    C’est juste source d’embrouilles pour la maintenance ^^ Une mauvaise habitude à perdre…

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function wotDaHell( window ) {
    	return window.open('hackmypc.ru');
    };
     
    var Banane = {
    	open: function() {
    		return 42;
    	}
    };
     
    wotDaHell(Banane);

  2. #22
    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 641
    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 641
    Points : 66 666
    Points
    66 666
    Billets dans le blog
    1
    Par défaut
    je te donne juste la syntaxe à utiliser pour éviter les problèmes ...

  3. #23
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 85
    Points : 41
    Points
    41
    Par défaut
    @ SpaceFrog: Et bien en faite je vois mal comment utiliser cette syntaxe sachant que les names de toutes les questions sont différent et je m'y connais mal en ajax pour pouvoir adapter le code à des requête sql ou autre :/

  4. #24
    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 641
    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 641
    Points : 66 666
    Points
    66 666
    Billets dans le blog
    1
    Par défaut
    tu peux soit avoir un array des indices de tes names et boucler dessus
    ou alors faire une focntion qui teste le debut de names
    un peu comme la contribution que j'ai postée : getElementsByIdReg

  5. #25
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Je m’interroge quant à la pertinence de donner le même name à plusieurs checkboxes… Même avec les crochets, le serveur ne reçoit jamais la position, seulement le nombre de cases cochées :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <input type="checkbox" name="chkbox[]" />
    <input type="checkbox" name="chkbox[]" />
    <input type="checkbox" name="chkbox[]" />
    <input type="checkbox" name="chkbox[]" />
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php var_dump($_GET); ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    array(1) {
      ["chkbox"]=>
      array(2) {
        [0]=>
        string(2) "on"
        [1]=>
        string(2) "on"
      }
    }
    J’ai coché les cases 1 et 3…

    Autant utiliser un input text attendant un nombre. En plus s’il y a beaucoup d’entrées, l’utilisateur préférera taper « 100 » plutôt que cliquer sur cent cases une par une…

  6. #26
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 85
    Points : 41
    Points
    41
    Par défaut
    @Watilin : le serveur reçoit une relation nom=valeur ou nom=valeur1,valeur2 etc...
    le même name me sert ici pour associer la valeur choisit par l'user car ce sont des bouton Radio et pas des checkboxs (ici je veux 1 seule réponse possible donc un choix entre boutons radio donc il me faut le même name) .

  7. #27
    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 641
    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 641
    Points : 66 666
    Points
    66 666
    Billets dans le blog
    1
    Par défaut
    pour des radios l'utilité est evidente, pour des checkboxes moins...
    mais elle peut se justifier si le but est juste de recupérer un array de valeurs

  8. #28
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 85
    Points : 41
    Points
    41
    Par défaut
    Bon en gros faut que je la refasse. Il me faut tout simplement savoir si pour plusieurs inputs de même name un input à été coché et ca pour chaque question, donc tant qu'il existe des input type radio qui ont un name différent, dites moi si je pars dans le bon chemin cette fois?

  9. #29
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    @SpaceFrog >
    Au temps pour moi, j’avais oublié qu’on peut mettre une value sur une checkbox.

    @Bastian >
    Ça va être exactement pareil ! Dans ta fontion de vérification, tu es obligé de parcourir tous les input d’une même série si aucun n’est coché…
    Par contre pour référencer les name, je suggère de la faire au chargement de la page plutôt qu’à chaque soumission du formulaire. Pour parler comme les savants, « ça réduit d’un degré polynomial la complexité de l’algorithme ».

    À l’arrache :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var names = {};
    function getNames() {
    	var $c = document.forms[0].getElementsByTagName('input');
    	for (var i = 0, input; input = $c.item(i); i++) {
    		if (input.type == 'radio' && !(input.name in names)) {
    			names[input.name] = input.name;
    		};
    	};
    };
    window.onload = getNames;
    J’ai pas coutume d’utiliser document.forms (ni window.onload d’ailleurs) mais pour l’exemple on va dire que bon hein voilà.

  10. #30
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    réessai:


    (effectivement la vérif est plus compliquée qu'il n'y paraît, autant pour moi);

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <script type="text/javascript">
     
    function valid_form(f){
     
     
    var el=f.getElementsByTagName("input");
    var t=[], ind=0, tot=0;
     
    	for(i=0;i<el.length;i++){
    		if(el[i].type=="radio"){
    			if(!t[el[i].name]){ind++
    				t[el[i].name]=ind;
    			}
     
    		}
    	}
     
    	for(i in t){
    		for(j=0;j<f.elements[i].length;j++){
    			if(f.elements[i][j].checked!=false){
    				tot++;
    			}
    		}
    	}
     
    	if(tot!=ind){
    		alert("à compléter");
    		return false
    	}
     
    }
     
    </script>

Discussions similaires

  1. Mon script ne fonctionne pas sous android
    Par sp2308 dans le forum jQuery
    Réponses: 4
    Dernier message: 19/08/2014, 23h20
  2. script jquery fonctionne pas sous IE
    Par bigbo26 dans le forum jQuery
    Réponses: 3
    Dernier message: 18/06/2010, 11h24
  3. différence entre ie et firefox script ne fonctionne pas sous ce dernier
    Par mika-57- dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/06/2009, 09h26
  4. Script ne fonctionnant pas sous FireFox
    Par durnambule dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/08/2008, 12h31
  5. Script ne fonctionne pas sous IE
    Par Stessy dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 29/09/2005, 13h44

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