Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Valider formulaire avec deux "document.forms"

5 réponses
Avatar
Viwiv
Bonjour,

Je souhaiterai valider un formulaire en JavaScript.

J'ai trouv=E9 sur l'excellent
http://www.openweb.eu.org/articles/validation_formulaire/
un article =E0 ce sujet.

Son auteur propose d'utiliser l'instruction suivante, que je compte
utiliser comme fichier externe pour rester conformer avec l'Xhtml sans
me casser la t=EAte :

function valider(){
frm=3Ddocument.forms['bonjour'];
if(frm.elements['prenom'].value !=3D "") {
return true;
}
else {
alert("Saisissez le pr=E9nom");
return false;
}
}

'bonjour" est le nom de mon formulaire, 'prenom' est le champ =E0
tester.

Jusque l=E0, l'instruction fonctionne.

En revanche, je m'interroge sur la fa=E7on de proc=E9der pour ajouter un
deuxi=E8me contr=F4le du m=EAme type, par exemple pour un champ 'nom'.

J'ai essay=E9 d'imbriquer des if et des elseif, mais =E7a ne fonctionne
pas...

Si je cr=E9=E9e deux fichiers javaScript, l'un pour le pr=E9nom, l'autre
pour le nom, cette option fonctionne, mais je ne la trouve gu=E8re
=E9l=E9gante...

Aussi souhaiterai-je avoir vos avis et vos conseils pour r=E9soudre mon
probl=E8me.

Soyez-en remerci=E9s.

Cordialement,

Vincent

5 réponses

Avatar
ASM
Viwiv wrote:
Bonjour,

Je souhaiterai valider un formulaire en JavaScript.

J'ai trouvé sur l'excellent
http://www.openweb.eu.org/articles/validation_formulaire/
un article à ce sujet.

Son auteur propose d'utiliser l'instruction suivante, que je compte
utiliser comme fichier externe pour rester conformer avec l'Xhtml sans
me casser la tête :


ha! oui ! çà a l'air d'être une fonction donnée au onsubmit du form

function valider(){
frm=document.forms['bonjour'];
if(frm.elements['prenom'].value != "") {
return true;
}
else {
alert("Saisissez le prénom");
return false;
}
}

'bonjour" est le nom de mon formulaire, 'prenom' est le champ à
tester.

Jusque là, l'instruction fonctionne.


Super
mais tu n'as pas l'air de comprendre comment çà fonctionne ?

cette fonction de vérification, quand elle a fini son job,
et si tout est ok doit renvoyer 'vrai' ( return true; )
dès qu'elle rencontre une anomalie hop !
- gueule gueule gueule ! kesaco c'bazzar ! ( alert('kesaco ?'); )
- hop ! terminé ! envoyer 'faux' ( return false; )


En revanche, je m'interroge sur la façon de procéder pour ajouter un
deuxième contrôle du même type, par exemple pour un champ 'nom'.


c'est tout simple ( hu ... ? enfin qd on sait faire )

pour chaque champ de texte ( <input type="text" /> )
- si le champ n'est pas vide tu passes ton chemin
- sinon
- tu envoies une alerte
- tu essaies de renvoyer sur le champ non rempli
- tu arretes la fonction en envoyant 'faux'
- au champ suivant (et puisqu'au champ d'avant on a passé car ok)
on fait la même chose
- et ainsi de suite

Pour les autres éléments (autre que textarea et input-type-text)
la vérification se fera sur le checked (checkbox) si necessaire
if(frm['boiteAcoche_1'].checked) ''; else { bla bla }
La vérification pour les radios-boutons est un peu + compliquée

function valider(){
// tableau des elements du formulaire
var frm = document.forms['bonjour'];
// verif champ 1 ( frm.prenom ou frm[0] ou frm['prenom'] )
// si c'est ok, on ne fait rien
if(frm.elements['prenom'].value != "") '';
// sinon hop! on prévient, on envoie sur le champ malade
// et on arrete tout
else {
alert("Saisissez le prénom");
with(frm['prenom']) { focus(); select(); }
return false;
}
// ensuite faire pareil pour les autres champs de texte
if(frm.elements['nom'].value != "") '';
else {
alert("Saisissez le nom");
with(frm['nom']) { focus(); select(); }
return false;
}
if(frm.elements['surnom'].value != "") '';
else {
alert("Saisissez le surnom");
with(frm['surnom']) { focus(); select(); }
return false;
}
// et on fini, une fois que tt a été vu, par l'envoi de 'vrai'
return true;
}

L'envoi de vrai permet enfin au submit de faire son travail
sinon auparavant et si erreur l'envoi de faux arrêtait la soumission.

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Viwiv
Bonjour,

Merci, Stéphane, pour ces lumineuses explications !

Par contre, et comme j'aime me compliquer la vie en dépit de mon
ignorance, je me pose deux nouvelles questions :

- puis-je à partir de mon script personnaliser la couleur du focus
lorsque le champ est en erreur ?

- comment puis-je, toujours dans ce script, valider un champ "mel" et
détecter la présence d'un "@" (vérification certes simpliste...).

Mille mercis.

Cordialement,

Vincent
Avatar
kurtz le pirate
In article ,
"Viwiv" wrote:

::- comment puis-je, toujours dans ce script, valider un champ "mel" et
::détecter la présence d'un "@" (vérification certes simpliste...).

1° -> voir http://spod.cx/stuff/answer.gif

2° -> avec une fonction du genre :
function checkMail() {
var x = document.forms[0].email.value;
var filter =
/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
if (filter.test(x))
alert('YES! Correct email address');
else
alert('NO! Incorrect email address');
}

trouvée sur : http://www.quirksmode.org/js/mailcheck.html

:)))
Avatar
ASM
Viwiv wrote:
Bonjour,

Merci, Stéphane, pour ces lumineuses explications !

Par contre, et comme j'aime me compliquer la vie en dépit de mon
ignorance, je me pose deux nouvelles questions :

- puis-je à partir de mon script personnaliser la couleur du focus
lorsque le champ est en erreur ?


f.style.backgroundColor = 'yellow';

- comment puis-je, toujours dans ce script, valider un champ "mel" et
détecter la présence d'un "@" (vérification certes simpliste...).


pour çà il y a des tas de soluces et d'exemples
et l'expérience montre que çà ne sert absolument à rien

m'enfin ... un exemple dans le code de :
http://perso.wanadoo.fr/stephane.moriaux/formsite.htm




--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Viwiv
Merci, Kurz ; merci Stéphane. J'étudierai ça demain matin à tête
reposée.

Amitiés,

Vincent