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 :

radio, verification formulaire


Sujet :

JavaScript

  1. #1
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut radio, verification formulaire
    Salut à tous,
    Je voudrais savoir si c'est possible de faire autrement, je m'explique:
    voici un exemple de code html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <form action="toto.html" method=post name="formulaire" onsubmit="controle('formulaire')">
    Quelles sont vos connaissances de HTML ?
    <input type="radio" name="choice" value="1">faibles
    <input type="radio" name="choice" value="2">moyennes
    <input type="radio" name="choice" value="3">bonnes
    <br>
    Indiquez votre expertise en programmation:
    <input type="radio" name="choice2" value="1">absente
    <input type="radio" name="choice2" value="2">moyenne
    <input type="radio" name="choice2" value="3">bonne
    <P>
    <input type="submit" value="Voir le résultat!">
    </form>
    j'ai fait une fonction javascript pour controler si l'utilisateur a fait son choix. la voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function control(formulaire){
    for (var i=0;i<document.forms["formulaire"].choice.length;i++) {
    	if (document.forms["formulaire"].choice[i].checked) { 
    	   return true; 
    	} 
    }
    	if (document.forms["formulaire"].choice.length == i) {
    	   alert("Vous n'avez pas choisi");
    	   return false;  
    	  }
    }
    Vous allez me dire, mais où est le souci . Bah cette fonction ne s'applique que pour les type radio de name "choice". Si je veux l'appliquer aux types radio de name "choice2" faudrait que je fasse un copier coller de mon code javascript et que je change choice en choice2. Et ainsi de suite si j'ai plusieurs pages qui utilisent les types radio, ça devrait etre le bordel. Donc je voulais savoir si je pouvais faire plus simple et plus propre.

    Je me suis dit que je pouvais appeler ma fonction en lui passant en argument le nom de mon formulaire ainsi que les names :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    control('formulaire','choice','choice2')
    Ensuite dans mon javascript, ne sachant pas au prealable combien d'arguments je peux avoir, je fais 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
    16
    17
    18
    19
    20
    21
    22
     
    function control(){
            //recupere le 1er argument (nom du formulaire)
    	var formulaire = control.arguments[0];
    //pour chaque name (choice et choice2 par exemple)
    	for (var i=1; i < control.arguments.length; i++) {
    		var name = control.arguments[i];
    		//on parcourt le tableau contenant les valeurs du bouton radio de nom "name".
    		for (var j=0;j<document.forms["formulaire"].name.length;j++) {
    			//si une case est cochée, alert et on sort de la boucle (break) mais aussi de la fonction et on return true
    			if (document.forms["formulaire"].name[j].checked) { 
    			   return true; 
    			} 
    		}
     
    		//si on arrive ici, ça veut dire que rien n'a été checké donc on retourne false
    		if (document.forms["formulaire"].name.length == i) {
    			alert("Vous n'avez pas choisi de methode ");
    			return false;  
    		}
    	}
    }
    Mais ça ne marche pas, je n'ai pas de message d'erreur. Je pense que le souci vient du faite que je recupere bien les names "choice" et "choice2", mais ce ne sont pas des tableaux, du coup, qd je fais name[j], bah il ne comprend pas que ça veut dire la case numero j des valeurs de name.
    Quelqu'un à une idée ou une meilleur façon de faire.

    Merci
    PS : au début, je ne faisais pas de verification car je pensais que par default, il y avait un choix de fait ou même qu'en rajoutant checked dans le code html ça suffisait, mais sous mac (safari), c'est pas le cas.

  2. #2
    Membre confirmé Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Points : 464
    Points
    464
    Par défaut
    c'est simple, au lieu de passer le formulaire comme parametre essaye de passer aussi ton bouton radio
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function control(formulaire,bradio){
    for (var i=0;i<document.forms["formulaire"].bradio.length;i++) {
       if (document.forms["formulaire"].bradio[i].checked) {
          return true;
       }
    }
       if (document.forms["formulaire"].bradio.length == i) {
          alert("Vous n'avez pas choisi");
          return false; 
         }
    }

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Citation Envoyé par amika
    c'est simple, au lieu de passer le formulaire comme parametre essaye de passer aussi ton bouton radio
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function control(formulaire,bradio){
    for (var i=0;i<document.forms["formulaire"].bradio.length;i++) {
       if (document.forms["formulaire"].bradio[i].checked) {
          return true;
       }
    }
       if (document.forms["formulaire"].bradio.length == i) {
          alert("Vous n'avez pas choisi");
          return false; 
         }
    }
    c'est quoi bradio? c'est un des name (choice ou choice2 c'est ça?)
    Mais en fait tout le souci est là. Car quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function control(formulaire,bradio)
    ça veut dire qu'à la base du sait que t'attends un formulaire avec un seul bouton radio.
    Dans le code html ci dessus, il y en a deux. Et je pourrais en avoir plusieurs en fonction des pages de mon site (sachant que le code javascript sera dans un script.js).
    d'ou l'idée de faire un onsubmit="control('formulaire','choice','choice2');"
    et faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function control(){
    .....
    }
    et recuperer les argument avec

  4. #4
    Membre confirmé Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Points : 464
    Points
    464
    Par défaut
    donc tu veux les controler avec un seul appel, tu peux faire:
    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
     
    function control(formulaire){
    for (var j=0;j<document.forms["formulaire"].length;j++) {
    	if ( document.forms["formulaire"][j].name.substr(0,6) =='choice') {
    		for (var i=0;i<document.forms["formulaire"][j].length;i++) {
    			if (document.forms["formulaire"][j][i].checked) {
    				return true;
    			}
    		}
    		if (document.forms["formulaire"][j].length == i) {
    			alert("Vous n'avez pas choisi");
    			return false;
    		}
    	}
    }
    }
    //NB: les noms des  checkbox soient: choice1,choice2,choice3......

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    j'ai testé ton script en faisant 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
    16
    17
     
    function control(formulaire){
    for (var j=0;j<document.forms["formulaire"].length;j++) {
    	if ( document.forms["formulaire"][j].name.substr(0,6) =='choice') {
    		for (var i=0;i<document.forms["formulaire"][j].length;i++) {
    			if (document.forms["formulaire"][j][i].checked) {
                alert("Vous avez choisi : "+ document.forms["formulaire"][j][i]);
                return false;
    			}
    		}
    		if (document.forms["formulaire"][j].length == i) {
    			alert("Vous n'avez pas choisi");
    			return false;
    		}
    	}
    }
    }
    Mais ça ne fonctionne pas, poutant je n'ai pas de message d'erreur (je teste sous firefox)
    Merci

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    pas d'idées?

  7. #7
    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
    proposition:
    plutôt que d'utiliser <br />, inclus chaque série de radio dans un <p></p> distinct;

    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
    34
    35
    36
    37
    <script type="text/javascript">
     
    var p, inp, ind;
     
    function check(f){
    	p=document.getElementsByTagName("p");
     
    	for(i=0;i<p.length;i++){
    		inp=p[i].getElementsByTagName("input");
     
    		if(inp.length>1){
    			for(j=0;j<inp.length;j++){
    				if(inp[j].type=="radio"){
    					if(inp[j].checked){
    						ind=false;
    						break
    					}
    					else{
    						ind=true
    					}
    				};
    			};
     
    			if(ind){
    				alert("Merci de répondre à chaque question.");
    				break
    			};
    		};
    	};
     
    	if(ind){
    		return false
    	};
     
    }
     
    </script>
    juste un prototype mais on peut affiner, notamment les messages d'erreur;

Discussions similaires

  1. [AJAX] Verification formulaire automatique
    Par foester dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/08/2007, 11h13
  2. Vérification formulaire
    Par nitteN dans le forum Langage
    Réponses: 6
    Dernier message: 10/08/2007, 02h05
  3. boutons radios dans formulaire
    Par deepwrath dans le forum Langage
    Réponses: 1
    Dernier message: 05/06/2007, 14h01
  4. verification formulaire et envoi
    Par PadaBen dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 20/09/2006, 12h21
  5. récuperer la valeur d'un bouton radio sans formulaire
    Par boss_gama dans le forum Général JavaScript
    Réponses: 28
    Dernier message: 18/09/2006, 11h52

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