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

Le
foucault
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="htt=
p://
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.toUpperCase();" />
</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>
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pascal PONCET
Le #740638
- 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 ?

Olivier Miakinen
Le #740637
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
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 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-]+$/

kurtz le pirate
Le #740633
In article foucault
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

foucault
Le #740632
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-]+$/
Olivier Miakinen
Le #740631

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.

Olivier Miakinen
Le #740630
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.

foucault
Le #740377
/^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>

kurtz le pirate
Le #740371
In article 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.



absolument !!! je viens d'y penser. désolé, je suis allé trop vite

--
klp


Publicité
Poster une réponse
Anonyme