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:

http://jsfiddle.net/mkdsjc0p/

Vous êtes réglage 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