La Validation Des Numéros De Téléphone À L'Aide De Javascript
Je travaille sur un formulaire web avec plusieurs champs et un bouton envoyer. Lorsque le bouton est cliqué, je suis pour vérifier que les zones de texte ont été remplies et que le numéro de téléphone est dans le bon format. Je n'accepte que 7 ou 10 chiffres des numéros de téléphone, mais des caractères tels que (,), (-), etc sont acceptables. Si cette case est vide ou que le numéro de téléphone n'est pas dans le format correct (pas 7 ou 10 chiffres, pas un nombre) ou a été laissé en blanc, je suis censé ajouter une bordure rouge autour de la zone de texte. Cette frontière est censé rester en place jusqu'à ce que l'utilisateur corrige l'erreur.
Je ne peux pas obtenir que cela fonctionne correctement. J'ai essayé plusieurs différentes façons de le faire, mais ont obtenu plusieurs différents types d'erreurs. Une façon semblait fonctionner, mais la bordure rouge ne s'affiche que pour une seconde, puis a disparu, et la valeur dans la zone de texte a été remis à zéro.
Voici mon code et un lien vers un jsfiddle que j'ai créée:
Javascript:
<script type="text/javascript">
function validateForm() {
return checkPhone();
}
function checkPhone() {
var phone = document.forms["myForm"]["phone"].value;
var phoneNum = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
if(phone.value.match(phoneNum)) {
return true;
}
else {
document.getElementById("phone").className = document.getElementById("phone").className + " error";
return false;
}
}
</script>
HTML:
<form name="myForm" onsubmit = "return validateForm()">
Phone Number: <input type="text" id="phone"><br>
</form>
JSFiddle:
phone
les éléments value
de la propriété, puis dans le test, vous avez accès au value
bien, de nouveau, cette fois de la valeur que vous avez déjà obtenu, qui n'existe pas.double possible de Javascript numéro de téléphone de validation
Vous avez déjà une référence à la forme de contrôle en tant que téléphone, pourquoi utiliser
document.getElementById
? Et plutôt que match, vous devriez être en utilisant test.Ce n'est pas un dupe de l'référencé question, parce que les critères de "qu'est ce qu'un numéro de téléphone" sont différents. Les solutions présentées dans le référencés question n'est pas de répondre aux exigences de ici.
OriginalL'auteur Beth Tanner | 2014-10-06
Vous devez vous connecter pour publier un commentaire.
Comme pour votre regexp je suppose qu'il doit être
Mais en général, la présomption n'est pas correcte car on peut entrer quelque chose comme
++44 20 1234 56789 ou +44 (0) 1234 567890
il est préférable de faire quelque chose comme ceci
ceci permet d'assurer que la valeur entrée est de 7 à 10 chiffres néanmoins que la mise en forme est. Mais vous devez penser à la longueur maximale pour le nombre pourrait être plus que 10 comme dans l'exemple ci-dessus.
OriginalL'auteur i100
OriginalL'auteur Sachin Gupta
OriginalL'auteur vishwanath
Vous pouvez consulter le site suivant pour connaître le numéro de téléphone de validation
OriginalL'auteur Codemaker
Avoir semblent tout simplement trop nombreux cas de bord, je suis allé pour un simple contrôle:
^(([0-9\ \+\_\-\,\.\^\*\?\$\^\#\(\)])|(ext|x)){1,20}$
La première chose que l'on peut remarquer est de permettre la répétition de "ext", mais le but de cette expression est d'empêcher les utilisateurs accidentellement entrer e-mail id, etc. au lieu de numéros de téléphone, à qui il ne.
OriginalL'auteur Sahil Ahuja
Bienvenue sur Stackoverflow. Il serait mieux si vous checkout Comment Répondre de la page pour les futurs efforts à débordement de Pile. -Merci
OriginalL'auteur subi