|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour à tous,
J'ai un souci dans le script pour les contrôle des champs de mon formulaire: pour le contrôle du: - Nom = OK - Prénom = OK - Telephone = aucun contrôle effectué - eMail = OK Je n'arrive pas à contrôler le champ du telephone. pouvez vous m'aider ? <html> <head> </head> <script type="text/javascript"> // Boucle de validation function validateForm(form) { if (isNotEmpty(form.nom)) { if (isNotEmpty(form.prenom)) { if (isNotEmpty(form.telephone)) { if (isNumber(form.telephone)) { if (isLen10(form.telephone)) { if (isNotEmpty(form.eMail)) { if (isEMailAddr(form.eMail)) { return true; } } } } } } } return false; } // Vérifie si un champ a bien été renseigné function isNotEmpty(elem) { var str = elem.value; var re = /.+/; if(!str.match(re)) { alert("Veuillez renseigner les champs obligatoires."); setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0); return false; } else { return true; } } // Vérifie si l'adresse e-mail est valide function isEMailAddr(elem) { var str = elem.value; var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/; if (!str.match(re)) { alert("Veuillez vérifier le format de votre adresse e-mail."); setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0); return false; } else { return true; } } // Vérifie si un champ contient 10 caractères function isLen10(elem) { var str = elem.value; var re = /^\d{10}\b/; if (!str.match(re)) { alert("Veuillez respecter le format du numéro de téléphone : '0311223344' pour '03 11 22 33 44'."); setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0); return false; } else { return true; } } // Positionne le curseur dans un champ donné function focusElement(formName, elemName) { var elem = document.forms[formName].elements[elemName]; elem.focus(); elem.select(); } </script> <body onload="document.getElementById('nom').focus()"> <form name="inscription" id="inscription" METHOD="POST" ACTION="http:// perso0.free.fr/cgi-bin/form2mail.pl" onsubmit="return validateForm(this)"> <div id="titreForm">Envoyer un message</div> <div id="corpForm"> <fieldset id="coordonnees"> <legend>Vos coordonnées</legend> <br /> <p> <label for="nom">* Nom :</label> <input type="text" name="nom" id="nom" tabindex="1" onfocus="this.className='focus';" onblur="this.className='normal';" onchange="javascript:this.value=this.value.toUpper Case();" /> </p> <p> <label for="prenom">* Prénom :</label> <input type="text" name="prenom" id="prenom" tabindex="2" onfocus="this.className='focus';" onblur="this.className='normal';"/> </p> <p> <label for="telephone">* Téléphone :</label> <input type="text" name="telephone" id="telephone" maxlength="10" tabindex="3" onfocus="this.className='focus';" onblur="this.className='normal';" /> </p> <p> <label for="eMail">* e-Mail :</label> <input type="text" name="eMail" id="eMail" tabindex="4" onfocus="this.className='focus';" onblur="this.className='normal';"/> </p> </fieldset> </fieldset> <br /> <fieldset id="periodicite"> <legend>Domaine</legend> <br /> <span class="legende">Choisissez le domaine concerné:</span> <p> <input type="radio" name="type" id="bouton" value="Particulier" checked="checked" tabindex="5"/> <label for="particulier">Particulier</label> <br/> <input type="radio" name="type" id="bouton" value="Professionel" tabindex="6"/> <label for="professionel">Professionel</label> </p> </fieldset> <br/> <fieldset id="periodicite"> <legend>Votre question</legend> <br /> <TEXTAREA name="Commentaire" id="text_area">Entrez votre texte ici</ TEXTAREA> </fieldset> <br/> <em>* Champs obligatoires</em> </div> <div id="piedForm"> <INPUT TYPE="submit" id="valid" VALUE="Envoyer" /> </div> </form> </body> </html> |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
foucault a écrit :
> - Telephone = aucun contrôle effectué > function validateForm(form) { >... if (isNumber(form.telephone)) { >...} Salut, J'ai peut-être loupé un truc, mais où est définie la fonction "isNumber()" ? Sinon, à part ça, fortiche l'imbrication des "if", mais totalement imbitable ! Pourquoi ne pas utiliser les opérateurs logiques ? |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Le 11/05/2007 18:07, foucault a écrit :
> Bonjour à tous, > > J'ai un souci dans le script pour les contrôle des champs de mon > formulaire: > pour le contrôle du: > - Nom = OK > - Prénom = OK > - Telephone = aucun contrôle effectué Pourtant, tu as semble-t-il un code pour faire ça : var re = /^\d{10}\b/; D'après le format que tu demandes j'aurais mis « $ » à la place de « \b », mais ça devrait déjà pas mal fonctionner comme ça, non ? > - eMail = OK Ah non ! Ton code n'est pas bon puisque, par exemple, mon adresse <om+news@miakinen.net> sera refusée, de même que de nombreuses autres adresses contenant au moins un caractère « + » ou « _ ». Tu as : var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/; Inversement, je ne sais pas si les caractères accentués ne risquent pas d'être acceptés par \w quand la locale le permet. Voir <http://faqfclphp.free.fr/#rub5.3> pour de meilleurs exemples. C'est la FAQ pour PHP, mais les expressions rationnelles de type PCRE sont les mêmes en JavaScript (du moins tant qu'on utilise des syntaxes simples, ce qui est bien le cas ici). Je te propose par exemple : var re = /^[.A-Za-z0-9+_-]+@[.A-Za-z0-9-]+$/ |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
In article <1178899621.675029.182510@p77g2000hsh.googlegroups .com>,
foucault <foucault_martial@tiscali.fr> wrote: > Bonjour à tous, > > J'ai un souci dans le script pour les contrôle des champs de mon > formulaire: > pour le contrôle du: > - Nom = OK > - Prénom = OK > - Telephone = aucun contrôle effectué > - eMail = OK > > Je n'arrive pas à contrôler le champ du telephone. > pouvez vous m'aider ? > > bla bla bla pourquoi te compliquer la vie, un /\d{10}/ devrait suffire non ? -- klp |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Exacte,
il manquait à la copie cette partie du code excusez moi: //Vérifie si un champ ne contient que des chiffres function isNumber(elem) { var str = elem.value; var re = /^[-]?\d*\.?\d*$/; str = str.toString(); if (!str.match(re)) { alert("Veuillez respecter le format du numéro de téléphone : '0311223344' pour '03 11 22 33 44'."); setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0); return false; } return true; } merci pour votre aide sinon pour le contrôle du mail je peut mettre ça sans problème ? c'est bon ? var re = /^[.A-Za-z0-9+_-]+@[.A-Za-z0-9-]+$/ |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Exacte,
il manquait à la copie cette partie du code excusez moi: //Vérifie si un champ ne contient que des chiffres function isNumber(elem) { var str = elem.value; var re = /^[-]?\d*\.?\d*$/; str = str.toString(); if (!str.match(re)) { alert("Veuillez respecter le format du numéro de téléphone : '0311223344' pour '03 11 22 33 44'."); setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0); return false; } return true; } merci pour votre aide sinon pour le contrôle du mail je peut mettre ça sans problème ? c'est bon ? var re = /^[.A-Za-z0-9+_-]+@[.A-Za-z0-9-]+$/ |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
Le 11/05/2007 18:58, foucault a écrit :
> > il manquait à la copie cette partie du code excusez moi: > > //Vérifie si un champ ne contient que des chiffres > function isNumber(elem) { > var str = elem.value; > var re = /^[-]?\d*\.?\d*$/; Ceci accepte un nombre décimal en écriture anglosaxonne, ou une chaîne vide : - un signe négatif (optionnel) - des chiffres (optionnels) - un point décimal (optionnel) - des chiffres (optionnels) > str = str.toString(); > if (!str.match(re)) { > alert("Veuillez respecter le format du numéro de téléphone : > '0311223344' pour '03 11 22 33 44'."); Ce n'est pas du tout le format correspondant à un nombre décimal. Pour ça, utilise plutôt isLen10() en remplaçant \b par $. > sinon pour le contrôle du mail je peut mettre ça sans problème ? c'est > bon ? > var re = /^[.A-Za-z0-9+_-]+@[.A-Za-z0-9-]+$/ Oui. Toutes les adresses valides seront acceptées par cette expression. Quant aux adresses invalides, ce n'est qu'au moment de la demande de confirmation par courriel que tu pourras les détecter, en même temps que cela t'évitera de stocker une adresse valide mais n'appartenant pas à celui qui se sera inscrit sur ton site. Attention : tu dois faire *aussi* les contrôles de validité sur le serveur, puisque n'importe qui peut t'envoyer ce qu'il veut en désactivant le contrôle JavaScript. |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
Le 11/05/2007 18:58, foucault a écrit :
> > il manquait à la copie cette partie du code excusez moi: > > //Vérifie si un champ ne contient que des chiffres > function isNumber(elem) { > var str = elem.value; > var re = /^[-]?\d*\.?\d*$/; Ceci accepte un nombre décimal en écriture anglosaxonne, ou une chaîne vide : - un signe négatif (optionnel) - des chiffres (optionnels) - un point décimal (optionnel) - des chiffres (optionnels) > str = str.toString(); > if (!str.match(re)) { > alert("Veuillez respecter le format du numéro de téléphone : > '0311223344' pour '03 11 22 33 44'."); Ce n'est pas du tout le format correspondant à un nombre décimal. Pour ça, utilise plutôt isLen10() en remplaçant \b par $. > sinon pour le contrôle du mail je peut mettre ça sans problème ? c'est > bon ? > var re = /^[.A-Za-z0-9+_-]+@[.A-Za-z0-9-]+$/ Oui. Toutes les adresses valides seront acceptées par cette expression. Quant aux adresses invalides, ce n'est qu'au moment de la demande de confirmation par courriel que tu pourras les détecter, en même temps que cela t'évitera de stocker une adresse valide mais n'appartenant pas à celui qui se sera inscrit sur ton site. Attention : tu dois faire *aussi* les contrôles de validité sur le serveur, puisque n'importe qui peut t'envoyer ce qu'il veut en désactivant le contrôle JavaScript. |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
Le 11/05/2007 18:57, kurtz le pirate répondait à foucault :
> > pourquoi te compliquer la vie, un /\d{10}/ devrait suffire non ? /^\d{10}$/ parce que sinon le texte "abc$@12345678901234567890#&" sera accepté aussi. |
|
|
|
#10 |
|
Messages: n/a
Hébergeur: |
Le 11/05/2007 18:57, kurtz le pirate répondait à foucault :
> > pourquoi te compliquer la vie, un /\d{10}/ devrait suffire non ? /^\d{10}$/ parce que sinon le texte "abc$@12345678901234567890#&" sera accepté aussi. |
|
|
|
#11 |
|
Messages: n/a
Hébergeur: |
> /^\d{10}$/ parce que sinon le texte "abc$@12345678901234567890#&" sera
> accepté aussi. Merci pour votre contribution. C'est très sympa, Où je peux trouver un lexique pour construire les expressions. Après vos conseilles voilà le résultat, y a t'il une manière plus propre et compatible pour ce code: <script type="text/javascript"> // Boucle de validation function validateForm(form) { if (isNotEmpty(form.nom)) { if (isNotEmpty(form.prenom)) { if (isNotEmpty(form.telephone)) { if (isNumber(form.telephone)) { if (isLen10(form.telephone)) { if (isNotEmpty(form.eMail)) { if (isEMailAddr(form.eMail)) { return true; } } } } } } } return false; } // Vérifie si un champ a bien été renseigné function isNotEmpty(elem) { var str = elem.value; var re = /.+/; if(!str.match(re)) { alert("Veuillez renseigner les champs obligatoires."); setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0); return false; } else { return true; } } // Vérifie si l'adresse e-mail est valide function isEMailAddr(elem) { var str = elem.value; var re = /^[.A-Za-z0-9+_-]+@[.A-Za-z0-9-]+$/; if (!str.match(re)) { alert("Veuillez vérifier le format de votre adresse e-mail."); setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0); return false; } else { return true; } } //Vérifie si un champ ne contient que des chiffres function isNumber(elem) { var str = elem.value; var re = /^[-]?\d*\.?\d*$/; str = str.toString(); if (!str.match(re)) { alert("Veuillez respecter le format du numéro de téléphone : '0311223344' pour '03 11 22 33 44'."); setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0); return false; } return true; } // Vérifie si un champ contient 10 caractères function isLen10(elem) { var str = elem.value; var re = /^\d{10}$/; if (!str.match(re)) { alert("Veuillez respecter le format du numéro de téléphone : '0311223344' pour '03 11 22 33 44'."); setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0); return false; } else { return true; } } // Positionne le curseur dans un champ donné function focusElement(formName, elemName) { var elem = document.forms[formName].elements[elemName]; elem.focus(); elem.select(); } </script> |
|
|
|
#12 |
|
Messages: n/a
Hébergeur: |
> /^\d{10}$/ parce que sinon le texte "abc$@12345678901234567890#&" sera
> accepté aussi. Merci pour votre contribution. C'est très sympa, Où je peux trouver un lexique pour construire les expressions. Après vos conseilles voilà le résultat, y a t'il une manière plus propre et compatible pour ce code: <script type="text/javascript"> // Boucle de validation function validateForm(form) { if (isNotEmpty(form.nom)) { if (isNotEmpty(form.prenom)) { if (isNotEmpty(form.telephone)) { if (isNumber(form.telephone)) { if (isLen10(form.telephone)) { if (isNotEmpty(form.eMail)) { if (isEMailAddr(form.eMail)) { return true; } } } } } } } return false; } // Vérifie si un champ a bien été renseigné function isNotEmpty(elem) { var str = elem.value; var re = /.+/; if(!str.match(re)) { alert("Veuillez renseigner les champs obligatoires."); setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0); return false; } else { return true; } } // Vérifie si l'adresse e-mail est valide function isEMailAddr(elem) { var str = elem.value; var re = /^[.A-Za-z0-9+_-]+@[.A-Za-z0-9-]+$/; if (!str.match(re)) { alert("Veuillez vérifier le format de votre adresse e-mail."); setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0); return false; } else { return true; } } //Vérifie si un champ ne contient que des chiffres function isNumber(elem) { var str = elem.value; var re = /^[-]?\d*\.?\d*$/; str = str.toString(); if (!str.match(re)) { alert("Veuillez respecter le format du numéro de téléphone : '0311223344' pour '03 11 22 33 44'."); setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0); return false; } return true; } // Vérifie si un champ contient 10 caractères function isLen10(elem) { var str = elem.value; var re = /^\d{10}$/; if (!str.match(re)) { alert("Veuillez respecter le format du numéro de téléphone : '0311223344' pour '03 11 22 33 44'."); setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0); return false; } else { return true; } } // Positionne le curseur dans un champ donné function focusElement(formName, elemName) { var elem = document.forms[formName].elements[elemName]; elem.focus(); elem.select(); } </script> |
|
|
|
#13 |
|
Messages: n/a
Hébergeur: |
In article <4644a3ff$1@neottia.net>,
Olivier Miakinen <om+news@miakinen.net> wrote: > Le 11/05/2007 18:57, kurtz le pirate répondait à foucault : > > > > pourquoi te compliquer la vie, un /\d{10}/ devrait suffire non ? > > /^\d{10}$/ parce que sinon le texte "abc$@12345678901234567890#&" sera > accepté aussi. absolument !!! je viens d'y penser. désolé, je suis allé trop vite -- klp |
|
![]() |
| Outils de la discussion | |
|
|