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 :

Test radio button checked


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Points : 55
    Points
    55
    Par défaut Test radio button checked
    Bonjour,

    je cherche un a savoir si au moins un bouton, parmis ma liste de radio bouton, est coché.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form>
    <input type="radio" name="methode" value="froid" >Froid</input>
    <input type="radio" name="methode" value="chaud" >Chaud</input>
    <input type="button" id="submit" value="Add" onClick="verifForm(this.form)">
    </form>

    Je cherche un JS simple du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function verifForm(formulaire)
    {
    alert(formulaire.methode.checked);
     
    if(formulaire.methode.checked)
    {
    alert('aucun button coché');
    }
    else
    {
    alert('formulaire submit');
    }
    }
    Malheureusement mon alert(formulaire.methode.checked); ne me remonte que undefined, je vois pas ou je me plante ....

    Merci de votre aide

  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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    il faut boucler sur la collection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByName('methode')
    et verifier si l'un d'entre eux est checked

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Pour compléter la réponse (correcte) de Spaffy,
    revient au même mais en plus crade old fashionned que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByName('methode')
    qui est plus élégant.
    Et donc les deux renvoient une collection d'éléments (et non pas un élément unique) et une collection ne possède pas de propriété checked.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Points : 55
    Points
    55
    Par défaut
    il faut boucler sur la collection
    Je ne suis pas sur de comprendre. Pour moi se que tu m'indique de faire c'est quelque chose comme sa :

    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
     
    function validerRadioGroup(){
    	var radioGroup = document.getElementsByName('methode')
    	var res = false;
    	var n = radioGroup.length;
    	for (var i=0;i<n;i++){
    		if (radioGroup[i].checked){
    			res = true;
    		}
    	}
     
    	return res;
    }
     
    function verifForm(formulaire)
    {
    alert(formulaire.methode.checked);
     
    if(validerRadioGroup())
    {
    alert('aucun button coché');
    }
    else
    {
    alert('formulaire submit');
    }
    }
    Cela ne fonctionne pas mieux pour moi, et je trouve sa particulièrement moche d'utiliser document.getElementByName alors que j'ai acces a mon objet par le passage de mon formulaire en argument ( je suis pas sur d'utiliser les bon therme )

    Après si j'ai pas d'autre solution j'utiliserai un énumération comme tu l'indique mais apres avoir testé cela n'as pas l'air fonctionnel pour moi.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Points : 55
    Points
    55
    Par défaut
    Bovino, j'suis old school :'(

    Donc si je comprend bien je suis obligé d'énuméré ma collection et de regarder si un item est "checked"

    Malgré mon tout mon code ne fonctionne 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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    normal ton code ne retourne le resultat attendu que si le derbnier check est coché
    tu dois soit faire le retur de res des que tu en trouve un coché ..
    http://jsfiddle.net/TB8W2/4/

    ou les tester tous en incrementant un compteur et tester le compteur à ka fin
    http://jsfiddle.net/TB8W2/3/

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    C'est un peu normal en fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(formulaire.methode.checked);
    On t'a dit que formulaire.methode renvoie une collection et qu'une collection ne possède pas de propriété checked, donc cette ligne fait planter ton script qui ne va pas plus loin...

    Et quand bien même,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (radioGroup[i].checked){
    	res = true;
    }
    ta fonction renvoie true si un bouton est coché, mais dans l'autre fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(validerRadioGroup())
    {
    alert('aucun button coché');
    }
    si tu reçois true, tu considères qu'aucun bouton n'est coché, ça manque de logique !

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    que si le derbnier check est coché
    Arg... j'avais pas fait attention à ça !
    D'où l'utilité du early return :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function validerRadioGroup(){
    	var radioGroup = document.getElementsByName('methode');
    	var n = radioGroup.length;
    	for (var i=0;i<n;i++){
    		if (radioGroup[i].checked){
    			return true;
    		}
    	}
     
    	return false;
    }

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Points : 55
    Points
    55
    Par défaut
    J'ai pris la premiere solution et je me suis enfin sortie de mon problème.

    edit :
    si tu reçois true, tu considères qu'aucun bouton n'est coché, ça manque de logique !
    J'me suis appercu de ma connerie après vous avoir lu

    Solution :

    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
     
    function validerRadioGroup(radioGroup){
    	var res = false;
    	var n = radioGroup.length;
    	// Je parcours mes radio afin de voir si une d'elle est à l'etat "checked"
    	for (var i=0;i<n;i++){
    		if (radioGroup[i].checked){
    			res = true;
    		}
    	}
    	return res;
    }
     
    function verifForm(formulaire)
    {
    if(!validerRadioGroup(document.getElementsByName('methode'))
    {
    alert('aucun button coché');
    }
    else
    {
    alert('formulaire submit');
    formulaire.submit();
    }
    }
    Du coup pour faire propre je souhaite enlever la variable "formulaire" mais je suis obligé de la gardé a cause de "formulaire.submit();".
    Y-a-t'il un autre moyen de forcer l'envoi d'un formulaire sans passer par une ligne comme celle-ci ??

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Oui, il peut y avoir une astuce en regroupant les deux fonctions et en gardant une trace du dernier bouton puis en utilisant la propriété form d'un élément de formulaire qui référence le formulaire auquel il appartient.
    Ca donnerait par exemple
    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
    function verifForm()
    {
    	var radioGroup = document.getElementsByName('methode'), radioChecked;
    	var n = radioGroup.length;
    	for (var i=0;i<n;i++){
    		if (radioGroup[i].checked){
    			radioChecked = radioGroup[i];
    		}
    	}
    	if(!radioChecked){
    		alert('Pas bon !');
    	}
    	else{
    		radioChecked.form.submit();
    	}
    }

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Points : 55
    Points
    55
    Par défaut
    Malheureusement je ne peux pas ( je pense ) merger les deux fonctions car dans ma fonction de verifForm je ne test pas que le radio bouton. Je test des inputs de text et un autre radio bouton.

    De fait je pense etre bloqué et je doit donc utilisé ma synthaxe, me confirme tu ou as-tu une autre "astuce" ??

  12. #12
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 657
    Points
    44 657
    Par défaut
    Bonjour,
    Citation Envoyé par SpaceFrog
    normal ton code ne retourne le resultat attendu que si le derbnier check est coché
    pas avec le code mis, même si le premier radio est coché la variable res reste à true.

  13. #13
    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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    En effet nosmo ...
    Du coup je ne vois pas pourquoi il ne retournait pas le bool attendu ?????

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

Discussions similaires

  1. [Débutant] Un Radio Button checked par défaut
    Par xarkam dans le forum C#
    Réponses: 4
    Dernier message: 30/10/2013, 13h27
  2. Radio button checked
    Par jpguiche dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 14/07/2010, 13h50
  3. Récupérer le radio button checked
    Par Elstak dans le forum C++
    Réponses: 1
    Dernier message: 02/05/2009, 17h15
  4. [FORMULAIRE] Comment savoir quel bouton radio est checked pour test ?
    Par Sekigawa dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/02/2009, 11h16
  5. radio button get value checked
    Par Milona dans le forum JSF
    Réponses: 5
    Dernier message: 18/06/2008, 11h51

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