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

problème contrôle téléphone dans formulaire

8 réponses
Avatar
foucault
Bonjour =E0 tous,

J'ai un souci dans le script pour les contr=F4le des champs de mon
formulaire:
pour le contr=F4le du:
- Nom =3D OK
- Pr=E9nom =3D OK
- Telephone =3D aucun contr=F4le effectu=E9
- eMail =3D OK

Je n'arrive pas =E0 contr=F4ler le champ du telephone.
pouvez vous m'aider ?

<html>
<head>
</head>
<script type=3D"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=E9rifie si un champ a bien =E9t=E9 renseign=E9
function isNotEmpty(elem) {
var str =3D elem.value;
var re =3D /.+/;
if(!str.match(re)) {
alert("Veuillez renseigner les champs obligatoires.");
setTimeout("focusElement('" + elem.form.name + "', '" +
elem.name + "')", 0);
return false;
} else {
return true;
}
}

// V=E9rifie si l'adresse e-mail est valide
function isEMailAddr(elem) {
var str =3D elem.value;
var re =3D /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
if (!str.match(re)) {
alert("Veuillez v=E9rifier le format de votre adresse e-mail.");
setTimeout("focusElement('" + elem.form.name + "', '" +
elem.name + "')", 0);
return false;
} else {
return true;
}
}

// V=E9rifie si un champ contient 10 caract=E8res
function isLen10(elem) {
var str =3D elem.value;
var re =3D /^\d{10}\b/;
if (!str.match(re)) {
alert("Veuillez respecter le format du num=E9ro de t=E9l=E9phone :
'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=E9
function focusElement(formName, elemName) {
var elem =3D document.forms[formName].elements[elemName];
elem.focus();
elem.select();
}
</script>

<body onload=3D"document.getElementById('nom').focus()">

<form name=3D"inscription" id=3D"inscription" METHOD=3D"POST" ACTION=3D"htt=
p://
perso0.free.fr/cgi-bin/form2mail.pl" onsubmit=3D"return
validateForm(this)">
<div id=3D"titreForm">Envoyer un message</div>
<div id=3D"corpForm">
<fieldset id=3D"coordonnees">
<legend>Vos coordonn=E9es</legend>
<br />
<p>
<label for=3D"nom">* Nom :</label>
<input type=3D"text" name=3D"nom" id=3D"nom" tabindex=3D"1"
onfocus=3D"this.className=3D'focus';" onblur=3D"this.className=3D'normal';"
onchange=3D"javascript:this.value=3Dthis.value.toUpperCase();" />
</p>
<p>
<label for=3D"prenom">* Pr=E9nom :</label>
<input type=3D"text" name=3D"prenom" id=3D"prenom" tabindex=3D"2"
onfocus=3D"this.className=3D'focus';" onblur=3D"this.className=3D'normal';"=
/>
</p>
<p>
<label for=3D"telephone">* T=E9l=E9phone :</label>
<input type=3D"text" name=3D"telephone" id=3D"telephone" maxlength=3D"=
10"
tabindex=3D"3" onfocus=3D"this.className=3D'focus';"
onblur=3D"this.className=3D'normal';" />
</p>
<p>
<label for=3D"eMail">* e-Mail :</label>
<input type=3D"text" name=3D"eMail" id=3D"eMail" tabindex=3D"4"
onfocus=3D"this.className=3D'focus';" onblur=3D"this.className=3D'normal';"=
/>
</p>
</fieldset>
</fieldset>
<br />
<fieldset id=3D"periodicite">
<legend>Domaine</legend>
<br />
<span class=3D"legende">Choisissez le domaine concern=E9:</span>
<p>
<input type=3D"radio" name=3D"type" id=3D"bouton" value=3D"Particulier"
checked=3D"checked" tabindex=3D"5"/>
<label for=3D"particulier">Particulier</label>
<br/>
<input type=3D"radio" name=3D"type" id=3D"bouton" value=3D"Professionel"
tabindex=3D"6"/>
<label for=3D"professionel">Professionel</label>
</p>
</fieldset>
<br/>
<fieldset id=3D"periodicite">
<legend>Votre question</legend>
<br />
<TEXTAREA name=3D"Commentaire" id=3D"text_area">Entrez votre texte ici</
TEXTAREA>
</fieldset>
<br/>
<em>* Champs obligatoires</em>
</div>

<div id=3D"piedForm">
<INPUT TYPE=3D"submit" id=3D"valid" VALUE=3D"Envoyer" />
</div>
</form>
</body>
</html>

8 réponses

Avatar
Pascal PONCET
- 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 ?

Avatar
Olivier Miakinen
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+ 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-]+$/

Avatar
kurtz le pirate
In article ,
foucault 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

Avatar
foucault
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-]+$/
Avatar
Olivier Miakinen

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.

Avatar
Olivier Miakinen
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.

Avatar
foucault
/^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>

Avatar
kurtz le pirate
In article <4644a3ff$,
Olivier Miakinen <om+ 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