Vérifier champ de type Vxxx dans un formulaire

psyckan Messages postés 135 Date d'inscription vendredi 27 août 2004 Statut Membre Dernière intervention 8 mai 2010 - 1 mai 2009 à 13:06
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 7 mai 2009 à 10:37
Bonjour,

Je voudrais simplement savoir comment vérifier qu'un champ est bien de la forme Vxxx ou x est un chiffre
J'ai déjà réussi a repérer le 'v' au debut comme ceci :

var v = vref.indexOf("v");

if(v < 1){
            form.submit();

et ça à l'air de fonctionner, mais je ne sais pas trop comment faire pour les trois chiffre.

Merci de votre aide.

8 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
1 mai 2009 à 13:54
Bonjour,

ah??? et... c'est quoi vref ?

ça arrive souvent ce "genre" de question....
généralement, c'est parce que les name générés ( par le langage serveur )
    le sont de cette manière !
    il "suffit"
       de mettre le même name, et coté client on
                peut utiliser name_généré[index]
       sinon getElementByName("v"+valeur sur 3 caractères), mais,
               à mon avis ( qui ne vaut pas grand chose ), vaut mieux à éviter

Cordialement [mon Site] [M'écrire] Bul
0
psyckan Messages postés 135 Date d'inscription vendredi 27 août 2004 Statut Membre Dernière intervention 8 mai 2010
1 mai 2009 à 14:29
En fait j'ai un formulaire avec ce champ dedans :

et j'aimerais savoir, au moment de la soumission, si le champ contient bien une chaine de type Vxxx (ou 0<x<9)

J'ai donc créer un fonction checkform :

function checkform(form) {
    vref = form.vref.value;
    var v = vref.indexOf("v");

            if((vref.length==4)&&(v < 1)&&[......]
            {
                form.submit();
                return(true);
            }

Et ce qu'il me manque c'est le test pour verifier que les caractères 2,3 et 4 sont bien des nombres
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
1 mai 2009 à 14:44
ah... plus rien à voir me semble-til ou j'avais mal compris !

bon déjà, évite le form.submit() !
    form est un nom qui ressemble à ce que connait le html/javascript,
           un jour ou l'autre ça te jouera des tours !
    tu ne respectes pas les règles de base de soumisson d'un formulaire,
           ça aussi ça te jouera des tours !
       <form name= "toto" action"où envoyer"
                onsubmit="return(checkform);"... :>
            .... tes champs ....
           et sans onclick !!!!!
      </form>
      la fonction retourne true et le formulaire est transmis,
          false, et il ne l'est pas.

  pour tes contrôles, tu peux utiliser :
      substr ( ou substring )   pour découper le champ ( selfHTML pour la doc ? )
         ou d'autres choses
      isNaN pour tester si e n'est pas numérique ( toujours par exemple =
      ...
      
 
0
psyckan Messages postés 135 Date d'inscription vendredi 27 août 2004 Statut Membre Dernière intervention 8 mai 2010
1 mai 2009 à 15:04
Merci pour ton aide sur le isNaN, j'ai fait quelque chose qui marche.

Ensuite j'ai tout changé pour suivre tes conseil sur les règles de bases du formulaire, mais ça ne fonctionne plus et je ne vois pas pourquoi.

J'ai la fontion checkform :

<SCRIPT language="javascript">
function checkform(subscription) {
    email = subscription.email.value;
    vref = subscription.vref.value;
    passwd = subscription.upassword.value;    if ((document.subscription.firstname.value "") || (document.subscription.lastname.value "") || (document.email == "") || (document.passwd == "") || (document.vref == ""))
    {
        alert('Please fill the whole form in');
        return(false);
    }
    else
    {
        var at = email.indexOf("@",1);
        var dot = email.indexOf(".",at+1);
        var v = vref.indexOf("v");
        if ((at > -1)&&(email.length >2)&&(dot > 1))
        {
            if((vref.length==4)&&(v < 1)&&(!isNaN(vref.charAt(1)))&&(!isNaN(vref.charAt(2)))&&(!isNaN(vref.charAt(3))))
            {
                return(true);
            }
            else
            {
                alert('Please enter a valid V-reference');
                return(false);
            }
        }
        else
        {
            alert('Please enter a valid email address');
            return(false);
        }
    }
}
</SCRIPT>

et la formulaire :

<form name='subscription' id='subscription' method='post' action='register.php' enctype='multipart/form-data' onsubmit='return(checkform);'>\n

Champs...

</form>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
1 mai 2009 à 15:20
sans regarder trop loin :
        ...onsubmit='return(checkform());'...

ensuite, il te reste à contrôler ce qui se passe dans ta fonction checkform
( pas à pas, deboggage, et alert )
@+
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
1 mai 2009 à 15:26
car, par exemple :
document.email avec ( juste devant) email = subscription.email.value;
    ça m'étonnerait que ça baigne

de plus ta fonction doit être appelée avec un paramètre
    function checkform(subscription) et quand tu l'appelles
    ben... y'a pas de paramètres !  onsubmit='return(checkform);
    peut-être onsubmit="return(checkform(this.form));"
    ou pas de paramètres et dans ce cas, il faut donner le formulaire
    document.subscription ou document.getElementById("subscription")

@+
0
psyckan Messages postés 135 Date d'inscription vendredi 27 août 2004 Statut Membre Dernière intervention 8 mai 2010
6 mai 2009 à 16:43
L'appel du formulaire marche bien a par un problème :
Le premier test est passé sans problème même si je ne remplit pas le formulaire et je ne comprend pas pourquoi

function checkform(subscription) {
    email = subscription.email.value;
    vref = subscription.vref.value;
    passwd = subscription.upassword.value;
    firstname = subscription.firstname.value;
    lastname = subscription.lastname.value;
        if ((document.firstname "") || (document.lastname "") || (document.email == "") || (document.passwd == "") || (document.vref == ""))
    {
        alert('Please fill the whole form in');
        return(false);
    }
    else
    { .......
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
7 mai 2009 à 10:37
je répète :
ta fonction checkform(subscription) attend un paramètre
    que tu ne donne pas à l'appel onsubmit='return(checkform);'
tel que tu fais d'ailleurs, tu n'appelles pas une fonction.

soit tu fais onsubmit='return(checkform(this.form));'
soit onsubmit='return(checkform());' et dans ta fonction tu utilises     if ( document.subscription.firstname.value "" || document.subscription.lasttname.value "" ||  ...
    si les name sont ok  <form name="subscription" ... >
                                       
@+
0
Rejoignez-nous