PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.javascript > problème contrôle téléphone dans formulaire
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
problème contrôle téléphone dans formulaire

Réponse
 
LinkBack Outils de la discussion
Vieux 11/05/2007, 17h07   #1
foucault
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut problème contrôle téléphone dans formulaire

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>

  Réponse avec citation
Vieux 11/05/2007, 17h23   #2
Pascal PONCET
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: problème contrôle téléphone dans formulaire

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 ?

  Réponse avec citation
Vieux 11/05/2007, 17h26   #3
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: problème contrôle téléphone dans formulaire

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-]+$/
  Réponse avec citation
Vieux 11/05/2007, 17h57   #4
kurtz le pirate
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: problème contrôle téléphone dansformulaire

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
  Réponse avec citation
Vieux 11/05/2007, 17h58   #5
foucault
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: problème contrôle téléphone dans formulaire

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

  Réponse avec citation
Vieux 11/05/2007, 17h58   #6
foucault
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: problème contrôle téléphone dans formulaire

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

  Réponse avec citation
Vieux 11/05/2007, 18h11   #7
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: problème contrôle téléphone dans formulaire

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.
  Réponse avec citation
Vieux 11/05/2007, 18h11   #8
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: problème contrôle téléphone dans formulaire

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.
  Réponse avec citation
Vieux 11/05/2007, 18h14   #9
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: problème contrôle téléphone dans formulaire

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.
  Réponse avec citation
Vieux 11/05/2007, 18h14   #10
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: problème contrôle téléphone dans formulaire

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.
  Réponse avec citation
Vieux 11/05/2007, 18h25   #11
foucault
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: problème contrôle téléphone dans formulaire

> /^\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>

  Réponse avec citation
Vieux 11/05/2007, 18h25   #12
foucault
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: problème contrôle téléphone dans formulaire

> /^\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>

  Réponse avec citation
Vieux 12/05/2007, 09h00   #13
kurtz le pirate
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: problème contrôle téléphonedans formulaire

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
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 15h59.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,23354 seconds with 21 queries