Vérifier champ de type Vxxx dans un formulaire

Signaler
Messages postés
135
Date d'inscription
vendredi 27 août 2004
Statut
Membre
Dernière intervention
8 mai 2010
-
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
-
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

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
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
Messages postés
135
Date d'inscription
vendredi 27 août 2004
Statut
Membre
Dernière intervention
8 mai 2010

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
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
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 =
      ...
      
 
Messages postés
135
Date d'inscription
vendredi 27 août 2004
Statut
Membre
Dernière intervention
8 mai 2010

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>
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
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 )
@+
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
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")

@+
Messages postés
135
Date d'inscription
vendredi 27 août 2004
Statut
Membre
Dernière intervention
8 mai 2010

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
    { .......
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
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" ... >
                                       
@+