Script verif form: ne fonctionne pas !

Résolu/Fermé
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 4 janv. 2006 à 17:16
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 - 9 janv. 2006 à 13:24
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.
A voir également:

12 réponses

Drown Messages postés 36 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 mai 2006 39
4 janv. 2006 à 20:12
je sait que c'est une question bete mais tu as mis l'attribut onsubmit="return verif(this)" dans ta balise form?
1
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
5 janv. 2006 à 08:05
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)
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
5 janv. 2006 à 09:39
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 ;-)
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
5 janv. 2006 à 10:52
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
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
5 janv. 2006 à 11:19
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.
0

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

Posez votre question
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
5 janv. 2006 à 11:45
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
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
5 janv. 2006 à 13:38
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.
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
5 janv. 2006 à 13:44
Encore moi, sory,
http://www.openweb.eu.org/articles/validation_formulaire/
mais je crois pas que j'ai bien tout pigé ???
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
5 janv. 2006 à 15:47
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
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
5 janv. 2006 à 16:30
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 !!!
0
Drown Messages postés 36 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 mai 2006 39
5 janv. 2006 à 16:48
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.
0
Drown Messages postés 36 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 mai 2006 39 > Drown Messages postés 36 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 mai 2006
5 janv. 2006 à 20:18
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.
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515 > Drown Messages postés 36 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 mai 2006
6 janv. 2006 à 15:48
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 !!!
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515 > Drown Messages postés 36 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 mai 2006
6 janv. 2006 à 09:19
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.

0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
6 janv. 2006 à 16:11
Question débile :
au lieu de tester avec tous tes champs t'as essayé ton script juste avec un
if()
{

}
elseif()
{

}
else
{

}


?!

Zep3k!GnO
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
6 janv. 2006 à 16:52
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.
0
Drown Messages postés 36 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 mai 2006 39
6 janv. 2006 à 18:50
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;
}
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
9 janv. 2006 à 12:36
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.
0
txiki Messages postés 6597 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 515
9 janv. 2006 à 13:24
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 !
0