2010-03-05 24 views
11

Necesito validar un número de teléfono en javascript. Los requisitos son:Validación del número de teléfono de Javascript

que debería ser de 10 dígitos, sin comas, no hay de guiones, sólo los números, y no el 1+ delante

Esto es lo que he escrito hasta ahora

function validatePhone(field,alerttxt) { 
    with (field) { 
     if(value.length > 10) { 
      alert(alerttext); 
      return false; 
     } 
     for(i = 0; i < value.length; i++) { 
      if(parseInt(value[i]) == NaN) { 
       alert(alerttxt); 
       return false; 
      } 
     } 
     return true; 
    } 
} 
function validateForm(thisform) { 
     if (validatePhone(phone,"Invalid phone number")==false) { 
      phone.focus(); 
      return false; 
     } 

    } 
} 
    <form action="post.php" method="post" id="contactform" onsubmit="return validateForm(this)"> 
    <ol> 
     <label for="phone">Your phone <span class="red"></span></label> 
     <input id="phone" name="phone" class="text" /> 
     </li> 
    </ol> 
    </form> 

pero, obviamente, no funciona. ¿Cómo puedo escribir la función validatePhone() para que funcione?

+6

Qué sistema hostil. Permita que las personas ingresen espacios y guiones, luego ignórelos. ¿Y qué pasa con los números de teléfono internacionales? – Quentin

+0

Esto parece una tarea escolar. Para un uso serio, * no debe * usar expresiones regulares para [validar los números de teléfono correctamente] (http://stackoverflow.com/a/4338544/1269037). –

+0

@DanDascalescu En realidad, en ese momento, no era una asignación escolar. Solo un trabajo de mierda en RentCoder –

Respuesta

29
phone = phone.replace(/[^0-9]/g, ''); 
if(phone.length != 10) { 
    alert("not 10 digits"); 
} else { 
    alert("yep, its 10 digits"); 
} 

Esto validará y/o corregir en función de sus necesidades, la eliminación de todos los no-dígitos.

+1

¿Por qué no usar match? – Marius

+5

como dije "validar y/o corregir", ¿por qué no solo coincide? Es una experiencia de usuario bastante pobre para obligar a alguien a ingresar un número de teléfono sin espacios o guiones cuando son tan fáciles de eliminar. – Erik

+0

gracias, me gusta mucho la expresión regular "correctiva" :-) –

0

función fija:

function validateForm(thisform) { 
     if (validatePhone(thisform.phone,"Invalid phone number")==false) { 
      thisform.phone.focus(); 
      return false; 
     } 
     return true; 
} 
+0

Me olvidé de incluirlo con (thisform) al principio de la función, pero en realidad lo escribí) –

+1

Pero también tiene el símbolo "}" adicional – antyrat

7

Se puede usar expresiones regulares:

function validatePhone(field, alerttext) { 
    if (field.match(/^\d{10}/)) { 
     return true; 
    } 
    alert(alerttext); 
    return false; 
} 
+0

Usted * no debería *, de hecho, usa expresiones regulares para [validar los números de teléfono correctamente] (http://stackoverflow.com/a/4338544/1269037). –

+0

Su requisito dice que debe buscar un formato de 10 dígitos sin ninguna otra cosa. Entonces esta verificación de expresión regular debería estar bien. Tiene razón: no me gustan las aplicaciones que me obligan a ingresar en un formato de número de teléfono específico. Un control de longitud mínima, para números y algunos caracteres() - +/en cualquier orden podría estar bien, como en: '^ [0-9() +/-] {5,} $' – arnep

1

Código para excepto Sólo números aparatos ortopédicos y guiones

function DoValidatePhone() { 
    var frm = document.forms['editMemberForm'];     
    var stripped = frm.contact.value; 
    var isGoodMatch = stripped.match(/^[0-9\s(-)]*$/); 
    if (!isGoodMatch) { 
     alert("The Emergency Contact number contains invalid characters." + stripped); 
     return false; 
    } 
} 
10

de Google libphonenumber es muy útil para la validación y el formato de números de teléfono en todo el mundo. Es más fácil, menos críptico y más robusto que usar un RegEx, y viene en JavaScript, Ruby, Python, C#, PHP y Objective-C.

+1

* This *. La gente simplemente no parece entender que [las expresiones regulares son soluciones ingenuas] (http://stackoverflow.com/questions/37684/how-to-replace-plain-urls-with-links/21925491#21925491) cuando se trata para validar datos del mundo real. –

-1
function validate(phoneString){ 

    reg = /^([+|\d])+([\s|\d])+([\d])$/; 

    return reg.test(phoneString); 

} 
Cuestiones relacionadas