Obliger de cocher une case dans un formulaire

Camomille Messages postés 16 Statut Membre -  
 Spartom117 -
Salut à tous,

je galère depuis hier sur une chose toute simple. Je veux obliger celui qui rempli un formulaire de cocher une case genre "j'accepte le règlement"
J'ai déjà un script qui vérifie que les champs sont bien remplis. Quand je remplace "checkbox" par "text" pour ma case à cocher, l'alerte a bien lieu! Mais ce que je veux, c'est une checkbox ou deux "radios"

Merci pour votre aide.

bien amicalement

Camomille

8 réponses

  1. PhP Messages postés 1774 Statut Membre 606
     
    Lo Camomille,

    Voici un small exemple qui empeche de valider un formulaire tq la case à cocher n'est pas cochée :

    <html>
    
    <head>
    <script>
    <!--

    function check(frm,elt)
    {
    if (!document.forms[frm].elements[elt].checked)
    {
    alert("Hé ho et la case à cocher on l'oublie !")
    return false;
    }
    else
    {
    return true;
    }
    }

    // -->
    </script>
    <body>
    <form id="formulaire" action="http://www.commentcamarche.com" method="post" onsubmit="return check('formulaire','lu')">
    Lu et approuvé <input type="checkbox" name="lu"><br>
    <input type="submit" value="Envoyer">
    </form>
    </body>
    </html>


    PhP    [Push the button,Don't push the
    .         button,Trip the station,Change the channel]
    3
  2. esox_ch Messages postés 770 Statut Membre 49
     
    En JS j'imagine?

    Eternel Questionneur. Seul et Unique membre de la : SPdLM
    => Société Protectrice des Langages Maltraités
    0
  3. Camomille Messages postés 16 Statut Membre 9
     
    Oui l'ami, en JS !!

    ...à moins que tu ais une autre idée ???

    bien amicalement

    Camomille
    0
  4. omar
     
    Et bien mon gaillard il faut tester cela dans ton javascript
    copier/coller:

    La gestion des radio-boutons est assez complexe. Voici le code HTML de ce sondage :
    <FORM>
    <INPUT type="radio" name="os" value="Windows 95" checked>Windows 95
    <INPUT type="radio" name="os" value="Windows 98">Windows 98
    <INPUT type="radio" name="os" value="Windows NT">Windows NT
    <INPUT type="radio" name="os" value="Linux">Linux
    <INPUT type="radio" name="os" value="Autre">Autre
    <INPUT type="button" value="Tester"
    onClick="testerRadio(this.form.os)">

    <SCRIPT language="javascript">
    function testerRadio(radio) {
    for (var i=0; i<radio.length;i++) {
    if (radio[i].checked) {
    alert("Système = "+radio[i].value)
    }
    }
    }
    </SCRIPT>
    La déclaration du formulaire crée un groupe de radio-boutons liés : le nom du groupe est os.
    La fonction javascript a comme paramètre le groupe des radio-boutons.
    Une boucle parcourt la liste des boutons du groupe. On repère le bouton qui a la propriété checked à true et on affiche alors la valeur correspondante.

    Pr voir l extrait plus ample ce mon copier/coller cf
    http://www.toutjavascript.com/savoir/savoir06_2.php3

    Ou sinon va sur google et tape +javascript +radio

    A+ omar
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Camomille Messages postés 16 Statut Membre 9
     
    Merci pour vos deux réponses.
    Le grand hic c'est que j'ai déjà un "onsubmit" !! Voici la portion de code qui nous intéresse:

    function FValidateControl(control) {
    if (control.value=="") {
    alert(control.name+": N'EST PAS REMPLI!!")
    control.focus()
    return false }
    return true }

    function FSubmitValidation(form) {
    if (!FValidateControl(form.TYPE)) return false
    if (!FValidateControl(form.ARRIVAL)) return false
    if (!FValidateControl(form.FIRST_NAME)) return false
    if (!FValidateControl(form.ADRESS)) return false
    if (!FValidateControl(form.ACCEPT)) return false
    return true }

    // end hiding from old browsers -->
    </script>
    </head>

    <form action="calcul.php" methode="POST"
    onsubmit="return FSubmitValidation(this)">

    <input
    type="checkbox" name="ACCEPT"value="Oui" tabindex="14">J'accepte les conditions de réservation.
    </font></p>
    <INPUT type=hidden maxLength=255 size=38 name=date value=<? echo strftime("%Y/%m/%d/%H/%M/%S ");?>><FONT
    color=#ff0000></FONT></TD></TR>
    <p>     <input
    value="Envoyer" type="submit"

    C'est bien entendu la case "ACCEPT" qui pose problème ;) ;)

    Un GRAND merci d'avance

    bien amicalement

    Camomille
    0
  7. PhP Messages postés 1774 Statut Membre 606
     
    Bsr

    Qu'à cela ne tienne ! Si le code JS ne convient pas et bien change le !

    Et ca donne :

    function FValidateControl(control) { 
    

    ok=false;

    switch (control.type) {
    case "text" :
    ok= !(control.value=="");
    break;

    case "checkbox" :
    ok= control.checked;
    break;

    default :
    alert("Impossible de tester le controle : "+control.name+"\nType "+control.type+" non prévu.");
    return false;
    }

    if (!ok)
    {
    alert(control.name+": N'EST PAS REMPLI!!");
    control.focus();
    }
    return ok;
    }


    J'ai juste ajouté un test sur le type de contrôle (zone de texte, case à cocher etc ...) et selon le type je fais telle ou telle action

    J'ai seulement testé le type "checkbox", mais tu peux ajouter les types "radio", "button" etc ... Sinon tu auras le msg d'erreur par défaut.

    PhP    [Push the button,Don't push the
    .         button,Trip the station,Change the channel]
    0
  8. Camomille Messages postés 16 Statut Membre 9
     
    Merci Php.

    ça m'a bien aidé! Ton script fonctionne nickel pour les "text" et "checkbox". J'en ai fait une deuxième fonction qui n'affecte que la "checkbox" pour me permettre d'envoyer une alerte plus adéquate.

    Encore mille fois merci pour ce sérieux coup de main!

    bien amicalement

    Camomille
    0
  9. Spartom117
     
    Bonjour a tous
    je fais des recherches pour resoudre mon probleme qui me semble se situer dans le meme secteur
    et puisque vous avez reussi a aider Camomille
    Je me dis pourquoi pas vous poser la question
    xD

    Voila mon probleme :
    j essaye de verifier tous les champs de mon formulaire et d'envoyer a la fin par mail le contenu de celui-ci
    certe l'envoie se passe nikel
    mais que les champs soit renseigné // ou pas lol
    j'aimerai savoir comment je pourais faire pour verifier mes champs avant d'envoyer le mail

    je vous joind mon code
    merci d'avance pour toutes les reponses

    code :
    <SCRIPT language="javascript">
    function ValidateControl(control) {
    ok=false;
    switch (control.type) {
    case "text" :
    ok= !(control.value=="");
    break;
    case "checkbox" :
    ok= control.checked;
    break;
    default :
    alert("Impossible de tester le controle : "+control.name+"\nType "+control.type+" non prévu.");
    return false;
    }
    if (!ok)
    {
    alert(control.name+": N'EST PAS REMPLI!!");
    control.focus();
    }
    return ok;
    }

    function ValidateControlMail(mail) {
    ok=false;
    if ((mail.indexOf("@")>=0)&&(mail.indexOf(".")>=0)) {
    ok=true;
    }
    else {
    alert("Mail invalide !");
    return false
    }
    }

    function SubmitValidation(form) {
    if (!ValidateControl(form.Nom)) return false
    if (!ValidateControl(form.Prenom)) return false
    if (!ValidateControlMail(form.Email)) return false
    if (!ValidateControl(form.Message)) return false
    return true }
    </SCRIPT>

    </head>
    <body>
    <h1 class="Titre">Contact du CREPS PACA</h1>
    <p> </p>
    <p> </p>
    <form method=POST action=formmail.php >
    <table>
    <tr>
    <td width="125">Votre Nom : </td>
    <td width="346"><input type=text name=Nom size=30></td></tr>
    <tr>
    <td>Votre Prenom : </td>
    <td><input type=text name=Prenom size=30 /></td></tr>
    <tr>
    <td>Votre Email : </td>
    <td>
    <INPUT type="texte" name="Email" value="Adresse Email" size="30">
    </td>
    </tr>
    <tr>
    <td colspan=2>Votre message: <br>
    <textarea COLS=50 ROWS=6 name=Message></textarea>
    </td></tr>
    </table>
    <br>
    <input type=submit value=Envoyer onsubmit="return SubmitValidation(this)"> - <input type=reset value=Annuler>
    </form>
    <p> </p>
    </body>
    0