Contrôle de saisie

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Contrôle de saisie

par béka » 27 juil. 2007, 14:37

ben j'ai pas fais grand chose, mais de rien.

PS, pense au tag Mettre résolu. :wink:

par laeti » 27 juil. 2007, 14:30

Ok ça marche très bien sans le Id dans envoi.
Merci beaucoup à tous les 2.

par béka » 27 juil. 2007, 14:28

Cyrano, il autait été possible de mettre en id envoi[]

par Cyrano » 27 juil. 2007, 14:25

Il y a un autre problème : il est interdit d'avoir plus d'une fois la même valeur pour un attribut "id" dans une page HTML. Or tes trois boutons radio partagent exactement le même nom.

Corrige en les identifiant Service_sig_forme1, Service_sig_forme2 et Service_sig_forme3 sans modifier la valeur de l'attribut name.

Ensuite, pointe dessus en passant pas le DOM du formulaire : ajoute un attribut id dans ta balise <form>
<FORM action="./" method="POST" name="envoi" id="envoi" enctype="multipart/form-data" onsubmit="return check_field()">
Crée une fonction pour pointer sur les éléments
function form_elt(form, id)
{
    return forms[form].elements[id];
}
Et enfin modifie la fonction de validation:
function check_field(){
    if(
        mini('envoi', 'Service_sig_forme3').checked == true && 
        (
            mini('envoi', 'Serv_sig_nom').value == '' || 
            mini('envoi', 'Serv_sig_nom').value == null
        )
    )
    {
        alert('Vous devez saisir un nom de service SIG');
        return false;
    }
    return true;
}
Re-teste ça... :-k

par laeti » 27 juil. 2007, 14:19

Ainsi, je ne rentre pas dans le If. Je ne comprends plus rien du tout!! :cry:

par béka » 27 juil. 2007, 14:14

fais un rasisonnement inverse alors, fais plutot
function check_field(){
    if(
        mini('Service_sig_forme').value == 'Pas de service attitré' && 
        (
            mini('Serv_sig_nom').value == '' || 
            mini('Serv_sig_nom').value == null
        )
    )
    {
        return false;
    }
    else {
alert('Vous devez saisir un nom de service SIG');
    return true;
    }
}

par laeti » 27 juil. 2007, 14:10

merci de ta réponse mais cela ne change rien. Lorsque je sélectionne 'Pas de service attitré' et que je ne remplis pas le champ 'Nom du service', l'alerte me demande toujours de saisir un nom de service. As-tu une autre idée?

par Cyrano » 27 juil. 2007, 13:56

Le problème dans ta fonction vient de ce que tu ne tiens pas compte de ce qu'on nomme "la précédence des opérateurs)

Avec une paire de parenthèses et une remise en forme, tu devrais comprendre le principe général :
function check_field(){
    if(
        mini('Service_sig_forme').value !='Pas de service attitré' && 
        (
            mini('Serv_sig_nom').value == '' || 
            mini('Serv_sig_nom').value == null
        )
    )
    {
        alert('Vous devez saisir un nom de service SIG');
        return false;
    }
    return true;
}
En d'autres termes, tu vérifies deux conditions, mais la seconde contient une alternative, soit "vide" soit "null".

Teste déjà comme ça.

Contrôle de saisie

par laeti » 27 juil. 2007, 12:35

Bonjour,

J'ai un formulaire php avec des boutons radio et des champs texte en fonction du choix d'un bouton radio et des champs doit être rempli. Je sais que je dois faire une fonction javascript. Lors de ma saisie, je rentre dedans mais ça ne fait pas ce que je veux car pour n'importe quel bouton radio sélectionné, elle m'affiche mon message d'alerte.
J'espère avoir été assez clair. Voilà mon code.

Ma fonction JS:

Code : Tout sélectionner

function mini(id){ return document.getElementById(id); } function check_field(){ if(mini('Service_sig_forme').value !='Pas de service attitré' && mini('Serv_sig_nom').value == '' || mini('Serv_sig_nom').value == null) { alert('Vous devez saisir un nom de service SIG'); return false; } return true; }

Mon formulaire:
<FORM action="traitement_saisie2.php" method="POST" name="envoi" enctype="multipart/form-data" onsubmit="return check_field()">
<TD><input id="Service_sig_forme" type="radio" name="Service_sig_forme" value="Service à part entière" checked><font face="Verdana" size="1">Un service à part entière</font></TD>
<TD><font face="Verdana" size="1">Nom du service :</font></TD>
<TD><input id="Serv_sig_nom" name="Serv_sig_nom" type="text" size="50" value="dede"></TD>
			
<TD><input id="Service_sig_forme" type="radio" name="Service_sig_forme" value="Service rattaché à un autre service"><font face="Verdana" size="1">Un service rattaché à un autre service</font></TD>

<TD><input id="Service_sig_forme" type="radio" name="Service_sig_forme" value="Pas de service attitré"><font face="Verdana" size="1">Pas de service attitré</font></TD>
Si quelqu'un a une petite idée, merci.