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>
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>

Poser une question


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 ?
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 ?
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-]+$/
pourquoi te compliquer la vie, un /d{10}/ devrait suffire non ?
--
klp
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-]+$/
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)
Ce n'est pas du tout le format correspondant à un nombre décimal. Pour
ça, utilise plutôt isLen10() en remplaçant b par $.
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.