Script verif form: ne fonctionne pas !

[Résolu/Fermé]
Signaler
Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
-
Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
-
Bonjour et meilleurs voeux à tous !
J'ai un petit souci avec un script de controle de champs de formulaire que voici:
<!-- Vérification des champs du formulaire
function verif(formulaire) 
{ 
if(formulaire.nom.value == '') 
alert('Merci de saisir votre nom') 
else if(formulaire.prenom.value == '') 
alert('Merci de saisir votre prénom')
else if(formulaire.matricule.value == '') 
alert('Merci de saisir votre matricule') 
else if(formulaire.phone.value == '') 
alert('Merci de saisir votre numéro de téléphone') 
else if(isNaN(formulaire.phone.value)) 
alert('Numéro de téléphone non valide.')
else 
formulaire.submit(); 
} 
//-->

Il est dans un fichier .js et dans le formulaire j'ai mis l'url dans le head.
Pouvez-vous me dire, tout d'abord s'il est correct (vérification des champs vides)
mais ensuite, lorsque je valide le formulaire je n'ai pas d'alerte m'indiquant qu'il manque tel où tel champ sauf celle m'indiquant que les données vont etres envoyés par courrier electronique etc etc....avec un bouton OK.

Si vous voulez plus de précisions je vous enverrai le code du formulaire (précisions: je ne PEUX pas utiliser de PHP).
Merci d'avance pour vos réponses.

12 réponses

Messages postés
36
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 mai 2006
39
je sait que c'est une question bete mais tu as mis l'attribut onsubmit="return verif(this)" dans ta balise form?
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
429
Salut Drown,
Non, mais ça ne marche pas non plus, pire, je crois qu'il soumet le formulaire sans afficher d'alerte.
Voici le début du form:
<form method="post" ENCTYPE="text/plain" action="sensibilisation-01.htm" name="formulaire">


Puis:
<input type="submit" name="Envoyer" tabindex="8" class="bouton" value="Valider" onsubmit="return verif(this)"    />

Mais si tu veux le code complet je veux bien l'y mettre. Ca m'enerve car c'est la première fois que je fais un form (celui-ci est tout simple) mais j'en aurai un autre a faire chez free donc en php.
Mais d'abord, j'aimerai bien piger le fonctionnement d'un formulaire avec la possibilité pour l'utilisateur de pouvoir vérifier ce qu'il a tapé (un résumé avant envoi réel)
Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
429
Salut a tous,
Bon, un peu d'amélioration ce coup-ci: voici ce que j'ai mis dans le form:
<form method="post" action="sensibilisation-01.htm" name="formulaire" onSubmit="return verif(this)">

Puis, dans le submit:
<input type="submit" name="Envoyer" tabindex="8" class="bouton" value="Valider" onSubmit="verif(this)"    />

Là, si j'oublie un champ obligatoire, j'ai bien le message d'alerte MAIS ! et oui, il y a un mais:
Il me réaffiche la page mais TOUS les champs sont vides.
Comment faire pour qu'il me "garde" les champs déjà renseignés ?
Est-ce possible au moins ?
Voici le code complet:
<form method="post" action="sensibilisation-01.htm" name="formulaire" onSubmit="return verif(this)">
      <div>
        <p><fieldset>
  <legend>Coordonnées de l'interresse(é)</legend>
          <label for="nom"> Nom <strong class="red">*</strong>          
          <input name="nom" type="text" id="nom" tabindex="1" size="40" maxlength="40">
        </label>
  <label for="prenom"> Prénom <strong class="red">*</strong>
<input name="prenom" type="text" id="prenom" tabindex="2" size="40" maxlength="40">
</label><p></p>
     <p>
       <label for="matricule"> matricule <strong class="red">*</strong>       
       <input type="text" name="matricule" id="matricule" tabindex="3" size="4" maxlength="4"></label>
        <label for="telephone"> Téléphone <strong class="red">*</strong>        
        <input type="text" name="phone" id="phone" tabindex="4" size="6" maxlength="6">
        </label>
                      <label for="e-mail"> e-mail <input name="courriel" type="text" id="courriel" tabindex="5" maxlength="50" value="facultatif" onFocus="this.value=''"></label></fieldset>
        <p></p>
        <div align="left">souhaite assister à la séance de sensibilisation à la sécurité des systèmes d'information pour la date ci-dessous:<br>
            <br>
        Choisir une date
        <select name="select" tabindex="6">
          <option>lundi 20 juin 2005</option>
          <option>mercredi 29 juin 2005</option>
          <option>vendredi 8 juillet 2005</option>
          <option>mardi 12 juillet 2005</option>
          <option>lundi 18 juillet 2005</option>
        </select>
        <br>
        <br>
        Commentaire éventuel:
        <textarea name="textarea" tabindex="7" cols="60" rows="4"></textarea>
        </div>
        <p align="center">
 <input type="submit" name="Envoyer" tabindex="8" class="bouton" value="Valider" onSubmit="verif(this)"    />      
        <input type="reset" name="reset" tabindex="9" class="bouton" value="Effacer" />
        </p>
      </div>
    </form>

Autre question: peut-on afficher une page intermédiaire pour un résumé ? Si oui, comment procéder ?
Puis une autre page pour signifier que le formulaire a bien été envoyé ?. Si oui, comment ?.

Merci d'avance pour votre aide éclairée ;-)
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
203
je vois pourquoi ca ne se passe pas comme tu veux ...

<input type="submit" name="Envoyer" tabindex="8" class="bouton" value="Valider" onSubmit="verif(this)" />


Moi perso, j'aurais mis :
<input type="button" name="Envoyer" tabindex="8" class="bouton" value="Valider" onSubmit="javascript:verif('formulaire')"    />


Autre question: peut-on afficher une page intermédiaire pour un résumé ? Si oui, comment procéder ?
Avec Php, ya aucun soucis....

Puis une autre page pour signifier que le formulaire a bien été envoyé ?. Si oui, comment ?.

Bin dans ton javascript, après avoir fait formulaire.submit, tu fais un window.open('URL','Nom_Fenetre','dimension...');

Voilà :P

Zep3k!GnO
Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
429
Salut Zep3k!GnO,
Ben que je le mette ou pas, ça me renvoi à la page suivante bien qu'il m'affiche juste avant l'alerte indiquant qu'il manque le nom.
C'est pas normal ?
Il me préviens qu'il manque le nom mais devrait me renvoyer sur le formulaire pour le completer et ainsi de suite jusqu'à ce que tous les champs obligatoires soient renseignés ! Et APRES, afficher la page de résumé verif-form.htm.
NOTE: en ayant supprimé
onSubmit="verif(this)" />

ça marche aussi de la même façon, sur la page verif-form.htm après l'affichage de l'alerte. Il passe outre les verifs.
C'est ça que je pige pas.
Mais au fait ! la page verif-form est une page statique ? Comment elle se remplirait ?
Je ne peux absolument pas utiliser le php, c'est un intranet.
Autre chose: il ne me garde pas les champs déjà renseignés ce qui oblige a tout retaper....

Merci pour ta réponse.
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
203
essaye avec
if(formulaire.nom.value == '') 
{
    alert('Merci de saisir votre nom');
} 
else if(formulaire.prenom.value == '') 
{
    alert('Merci de saisir votre prénom');
}
else if(formulaire.matricule.value == '') 
{
    alert('Merci de saisir votre matricule') ;
}
else if(formulaire.phone.value == '') 
{
    alert('Merci de saisir votre numéro de téléphone');
} 
else if(isNaN(formulaire.phone.value)) 
{
   alert('Numéro de téléphone non valide.');
}
else
{ 
   formulaire.submit(); 
}


p'tet que ca passera mieux...

Zep3k!GnO
Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
429
Bon désolé mais c'est pire. Donc je garde le premier script (celui du post ci dessus). Il ne m'affiche aucune alerte avec ce que tu m'a corrigé. (?).
Le bouton valider ci dessous, lui, fonctionne puisqu'il m'affiche l'alerte puis la page vide du formulaire (si je fais OK à l'alerte):
<input type="submit" name="Envoyer" tabindex="8" class="bouton" value="Valider"    />

Pb: il m'efface tous les champs.
Merci encore de ta patience.
Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
429
Encore moi, sory,
http://www.openweb.eu.org/articles/validation_formulaire/
mais je crois pas que j'ai bien tout pigé ???
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
203
Bizar car ce que je t'ai mis normalement c'est la synthaxe dans les règles de l'art...
Mais pour ne pas t'embetter ,essaye avec juste une ou 2 condition ,zappe le elseif, mets juste un if{]else{} et test avec ca puis au fur et a mesure, intègre des if{}else{} dans le else{} , en gros tu réivente le elseif...

Zep3k!GnO
Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
429
Je veux bien te croire (et d'ailleurs je ré-essaie de suite) !
Je ne comprends pas qu'il m'affiche l'alerte pour y mettre le nom par exemple (donc en cliquant sur OK je devrais me retrouver sur la même page pour taper le nom) mais au lieu de ça, en cliquant sur OK il m'affiche la récapitulative (d'ailleurs j'ai des doutes quant à la possibilité d'afficher les champs renseignés sur cette page)
Je me trompe ?
C'est pas grave, je resterai sur la page principale mais ce que je veux c'est qu'il me mette des alertes tant qu'il faudra (champs vides) et qu'ensuite on puisse cliquer sur envoyer.

Je ne sais pas comment lui dire "si toutes les conditions sont remplies, tu soumet le formulaire vers mon mail "(je n'ai pas le choix a moins d'ajouter un enregistrement dans un classeur excel partagé (réseau intranet) et accessible à tous le personnel de la boite).
Mais là non plus je ne vois pas comment je pourrai faire !!!
Messages postés
36
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 mai 2006
39
après une petite relecture il manque un
return false;
dans le javascript de Zep3k!GnO avec le onsubmit="return verif(this)" à devrait peut etre marcher.

On ne pense pas souvent aux return et ça pose souvent de gros problèmes par contre le "formulaire.submit()" avec ce code devrait pouvoir etre remplacé par un "return true;"

pense aussi a enlever les espaces en début et fin de chaine.

ça devrait mieux marcher.
Messages postés
36
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 mai 2006
39 >
Messages postés
36
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 mai 2006

ciel j'ai oublié de dire ou mettre les "return false;".

il faut les mettre après les "alert("...");" dans les cas ou le formulaire est mal rempli.
Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
429 >
Messages postés
36
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 mai 2006

Salut Drown,
Je veux bien mettre les return false (d'autant que dans une doc j'ai vu qu'il vallait mieux mettre des booleens) mais je patauge.
J'ai tout essayé:
if(formulaire.nom.value == '') 
    alert('Merci de saisir votre nom') {return false};
if(formulaire.nom.value == '') 
    alert('Merci de saisir votre nom') return false;
if(formulaire.nom.value == '') 
    alert('Merci de saisir votre nom' return false);


Bref j'ai des soucis avec l'écriture du code.
Je maintiens seul le premier script (1er du post) fonctionne, il m'affiche des alertes mais me vide les champs déjà renseignés ;-(((

Pitié ! je perds la tête !!!
Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
429 >
Messages postés
36
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 mai 2006

Bonjour a tous,
Bon, le script ci-dessous ne fonctionne pas:
<!-- Vérification des champs du formulaire
function verif(formulaire) 
if(formulaire.nom.value == '') 
{
    alert('Merci de saisir votre nom')return false;
} 
else if(formulaire.prenom.value == '') 
{
    alert('Merci de saisir votre prénom')return false;
}
else if(formulaire.matricule.value == '') 
{
    alert('Merci de saisir votre matricule')return false;
}
else if(formulaire.phone.value == '') 
{
    alert('Merci de saisir votre numéro de téléphone')return false;
} 
else if(isNaN(formulaire.phone.value)) 
{
   alert('Numéro de téléphone non valide.')return false;
}
else
{ 
   formulaire.submit()return true; 
}
//-->

Par contre le premier du post, en haut fonctionne. (Il faudrait que je formate le tel sur 6 chiffres mais on verra ça plus tard).
Comment peut-on faire pour ne pas effacer les champs déjà renseignés en cas de retour sur la page pour cause d'oubli d'un champ ? C'est pénible: si on oublie le tel par exemple, on a l'alerte (donc on sait qu'il faut renseigner aussi le champ tel), donc on revient sur la page mais TOUT est vide !!!!
Y a pas de possibilité de "mémoriser" les champs déjà renseignés ?
Et si tout est OK, on valide mais je ne sais pas ce qui se passe (pas de messages ni rien; on ne sait pas si le formulaire est envoyé ou non (dans mon cas, il devrait ajouter un enregistrement sur un classeur excel) pas de php possible (intranet).
Merci tout de même de vous pencher sur mes soucis.
N'hesitez pas a inserer des commentaires entre chaque lignes du script pour que je pige mieux.

Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
203
Question débile :
au lieu de tester avec tous tes champs t'as essayé ton script juste avec un
if()
{

}
elseif()
{

}
else
{

}


?!

Zep3k!GnO
Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
429
Ouais ! hélàa !

Il y a bien verif avec alerte mais en cliquant sur OK de l'alerte il passe quand même à la page de recap.
ca me gaaaave !!!

Je vais m'envoyer le script et les pages à la maison pour tester depuis chez moi. grrrrrh !
Bonjour le week-end.... :-((((

Merci quand même pour ta gentillesse.
Messages postés
36
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 mai 2006
39
As tu essayé :

if(formulaire.nom.value == '') {
    alert('Merci de saisir votre nom') ;
    return false;
}else ...


en réalitée les {} délimitent un bloc d'instrucitions,
par exemple dans les ifs:

If (booleen)
     alert("1");
alert("2");


alertes :
si booleen est vrai : 1 puis 2
si booleen est faux : 2 uniquement

maintenant avec ce code :
If (booleen){
     alert("1");
     alert("2");
}

alertes :
si booleen est vrai : 1 puis 2
si booleen est faux : aucune alerte



Pour ton test de téléphone je pense que
if ( (formulaire.phone.value.length != 10) || (isNaN(formulaire.phone.value) ){
alert ("téléphone érroné");
return false;
}
Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
429
Salut a tous,
J'ai ENFIN trouvé un truc qui fonctione (voir l'autre post).

Drown: en rajoutant ta ligne, ça ne fonctionne plus, ucune alertes et passe à la page suivante (???)
<!-- Vérification des champs du formulaire
function verif() 
{ 
	var nom = document.formulaire.nom.value;
	if (document.formulaire.nom.value == "")
	{
		alert ('Veuillez entrer votre nom');
		document.formulaire.nom.focus();
		return false;
	}
	if(document.formulaire.prenom.value == "")
	{
		alert ('Veuillez entrer votre prénom');
		document.formulaire.prenom.focus();
		return false;
	}
	if(document.formulaire.matricule.value == "")
	{
		alert ('Veuillez entrer votre matricule');
		document.formulaire.matricule.focus();
		return false;
	}
	if(document.formulaire.telephone.value == "")
	{
		alert ('Veuillez entrer un n° de téléphone');
		document.formulaire.telephone.focus();
		return false;
	}
	if((formulaire.telephone.value.length != 10) || (isNaN(formulaire.telephone.value)){ 
		alert ('téléphone érroné'); 
		document.formulaire.telephone.focus();
		return false; 
	}
	else {return true;}
}
//-->


Où est la boulette ? Je voudrais limiter lenombre à 6 chiffres mais pour le moment je l'ai laissé comme ça.... Pour voir.
Un très grand merci en tous cas à ceux qui ont eu la patience de tenter de m'expliquer des choses.
Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
429
Gagné !
if((formulaire.telephone.value.length != 10) || (isNaN(formulaire.telephone.value)){ 
		alert ('téléphone érroné'); 
		document.formulaire.telephone.focus();
		return false; 
	}
doit etre remplacé par:
if(formulaire.telephone.value.length != 6){ 
		alert ('Le n° de téléphone doit comporter 6 chiffres'); 
		document.formulaire.telephone.focus();
		return false; 
	}


Merci a vous tous !