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 :

Bouton submit grisé si AU MOINS une checkbox n'est pas cochée


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 133
    Points : 61
    Points
    61
    Par défaut Bouton submit grisé si AU MOINS une checkbox n'est pas cochée
    Bonsoir,
    J'ai un formulaire avec une checkbox et un bouton submit. Ce dernier est grisé tant que je ne coche pas la case. Jusque là, tout fonctionne parfaitement.
    Voici le code javascript du formulaire qui fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function ChangeStatut(formulaire){
    	if(formulaire.tout.checked == true) {
    		formulaire.submit.disabled = false
    	}
    	if(formulaire.tout.checked == false) {
    		formulaire.submit.disabled = true 
    	}
    }
    Seulement j'ai un autre formulaire avec des dizaines de checkbox générées par une requête mysql et j'aimerais le même comportement que mon premier formulaire. Seulement je ne vois pas comment faire.

    Voici mon formulaire que j'ai débarassé de tout le code superflu pour la clarté.
    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 name='form' id='form' action='index.php?P=envoimessage' method='POST'>
     
    				<?php
     
    				$query = "SELECT ID, Section, Nom, Prenom, Adresse_mail FROM adherents WHERE Adresse_mail <> '' ORDER BY Nom, Prenom";
    				$result = mysql_query($query) or die ('Erreur SQL !'.$sql.''.mysql_error());
     
    				while($row = mysql_fetch_array($result)){
    				$id_adh=$row['ID'];
    				echo "<input type='checkbox' name='dest[]' id='dest[]' value='".$id_adh."'>".addslashes($row['Nom'])." ".addslashes($row['Prenom'])."\n";
    					}
    				?>
    			<input ype='submit' name='submit' id='submit' value='Ecrire'>
    		</form>
    J'ai essayé ce code javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function ChangeStatut2(formulaire){
    	if(formulaire.dest[].checked == true) {
    		formulaire.submit.disabled = false
    	}
    	if(formulaire.dest[].checked == false) {
    		formulaire.submit.disabled = true 
    	}
    }
    mais sans succès. Ca me fait une erreur de fonction.

    Quelqu'un peut m'aider svp ?

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 059
    Points : 44 584
    Points
    44 584
    Par défaut
    Bonsoir,
    merci de mettre le code HTML généré par le PHP, il sera ainsi plus facile de t'aider.
    Les règles incontournables d'utilisation de ce forum

    Pour le principe, à chaque click sur une chekbox tu parcours toutes les checkbox du formulaire et si aucune n'est cochée tu disables le bouton.

  3. #3
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Ce détail à corriger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input ype='submit' name='submit' id='submit' value='Ecrire'>
    Et si je puis me permettre cette petite refactorisation...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    /*function ChangeStatut(formulaire){
    	if(formulaire.tout.checked == true) {
    		formulaire.submit.disabled = false
    	}
    	if(formulaire.tout.checked == false) {
    		formulaire.submit.disabled = true 
    	}
    }*/
     
    function ChangeStatut(formulaire){
    	formulaire.submit.disabled = !formulaire.tout.checked;
    }
    Même effet, avec un "très léger" gain de lisibilité ^^
    Dans le même esprit, plutôt que de copier-coller la fonction et de lui ajouter un "2" pour modifier un point de détail, faisons plutôt un pas vers la généricité... non ?

    Mais pour aller plus loin, comme dit justement NoSmoking, il nous faudrait le code généré, déjà, et voir aussi éventuellement l'appel à la fonction ChangeStatut.

Discussions similaires

  1. [XL-2007] Rendre invisible des textbox si la checkbox n'est pas cochée dans l'userform
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 13/08/2009, 20h08
  2. [DOM] Vérification d'un formulaire avec "bouton submit grisé"
    Par SunBoy dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/12/2008, 21h39
  3. Cocher au moins une checkbox dont son nombre varie
    Par Seb981 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 07/08/2007, 15h02
  4. bouton submit qui ne fonctionne qu'une fois
    Par sam01 dans le forum Langage
    Réponses: 6
    Dernier message: 06/07/2007, 08h19
  5. Bouton submit grisé avant ouverture lien
    Par Ben42 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/01/2006, 17h04

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