Foros del Web » Programando para Internet » Javascript »

Validar telefono con rayas

Estas en el tema de Validar telefono con rayas en el foro de Javascript en Foros del Web. Hola tengo la siguiente funciona : @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original function maximo_ph ( ) {       c = form. phone ...
  #1 (permalink)  
Antiguo 15/08/2012, 01:44
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Pregunta Validar telefono con rayas

Hola tengo la siguiente funciona :


Código Javascript:
Ver original
  1. function maximo_ph() {
  2.       c = form.phone.value;
  3.       if(c.length > 0) {
  4.         u = c.substr(c.length-1,1);  
  5.         if(u < "0" || u > "9") {
  6.             form.phne.value = form.phone.value.substr(0,c.length-1);
  7.            
  8.         }
  9.          
  10.       }
  11.    
  12. }

Esta valida el telefono de modo que al poner un caracter que no sea numero lo borra. Pero yo quiero tambien hacer que tambien permita que se escriba rayas(-)
Para el siguiente formato : 222-222-222 y 222222222 y 222 222 222

Como puedo hacer una funcion para esto ?

Con una expresion regular??

Gracias :)
  #2 (permalink)  
Antiguo 15/08/2012, 01:56
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Validar telefono con rayas

Con expresiones regulares se puede hacer todo, véase por ejemplo para

222-222-222

/^(([0-9]{3})-){2}([0-9]{3})$/.test("222-222-222");

para 222222222 valdría algo tan simple como

/^[0-9]{9}$/.test("222222222");

y para 222 222 222 algo al estilo

/^([0-9]{3} ){2}([0-9]{3})$/.test("222 222 222");

y por tanto, sin ahondar mucho en cómo se podrían unificar esas expresiones (que seguramente se puedan unificar en una sóla) se podría hacer algo así

telefono = "222-222-222"
if(/^([0-9]{3} ){2}([0-9]{3})$/.test(telefono) || /^[0-9]{9}$/.test(telefono) || /^(([0-9]{3})-){2}([0-9]{3})$/.test(telefono)){

alert("teléfono correcto");
}

No he comprobado las expresiones regulares, sólo las he escrito sobre la marcha según se me ocurría, así que tendrás que testar tú que funcionan.

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #3 (permalink)  
Antiguo 15/08/2012, 06:06
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Pregunta Respuesta: Validar telefono con rayas

Cita:
Iniciado por dontexplain Ver Mensaje
Con expresiones regulares se puede hacer todo, véase por ejemplo para

222-222-222

/^(([0-9]{3})-){2}([0-9]{3})$/.test("222-222-222");

para 222222222 valdría algo tan simple como

/^[0-9]{9}$/.test("222222222");

y para 222 222 222 algo al estilo

/^([0-9]{3} ){2}([0-9]{3})$/.test("222 222 222");

y por tanto, sin ahondar mucho en cómo se podrían unificar esas expresiones (que seguramente se puedan unificar en una sóla) se podría hacer algo así

telefono = "222-222-222"
if(/^([0-9]{3} ){2}([0-9]{3})$/.test(telefono) || /^[0-9]{9}$/.test(telefono) || /^(([0-9]{3})-){2}([0-9]{3})$/.test(telefono)){

alert("teléfono correcto");
}

No he comprobado las expresiones regulares, sólo las he escrito sobre la marcha según se me ocurría, así que tendrás que testar tú que funcionan.

Un saludo.
Hola gracias por tu respuesta :)

No he provado los patrones o mejor he probado solo : 222222222
porque en mi codigo al poner una letra o cualquier otro caracter que no sea numero lo borra ... asi no se pueden poner rayas(-) como solucionarlo ??

Gracias :)
  #4 (permalink)  
Antiguo 15/08/2012, 06:15
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Validar telefono con rayas

Cita:
Iniciado por patilanz Ver Mensaje
Hola gracias por tu respuesta :)

No he provado los patrones o mejor he probado solo : 222222222
porque en mi codigo al poner una letra o cualquier otro caracter que no sea numero lo borra ... asi no se pueden poner rayas(-) como solucionarlo ??

Gracias :)
Es cosa de que simplemente no borres los caracteres que no sean números. Usando expresiones regulares similares y match se puede devolver la parte de la cadena que coincide si así es, p. ej

asd222-222-222texto

una expresión regular con match devolvería la parte coincidente con el número

asd222-222-222texto

si no se encontrase ningún patrón en tal cadena (ninguno de los tres anteriores), tan sencillo como dar error.

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #5 (permalink)  
Antiguo 15/08/2012, 12:03
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Validar telefono con rayas

En la web hay un montón de sitios con expresiones regulares pre-hechas, y las de teléfonos puden ser de las más simples, que admiten cualquier cantidad de números, guiones y espacios, hasta las que admiten y prueban ubicación de signos de suma, asteriscos y numerales, además de contar la cantidad de dígitos para filtrar por ciudad o hasta central telefónica.

Uno que te puede servir es

Código:
if(/^([0-9\+\s\+\-])+$/.test(miValor)){
}
Y como recomendación, la mayoría de los formularios no prueban "en tiempo real", cuando envían, o por lo menos cuando salen del campo, les ponen el aviso de incorrecto. No estoy seguro de cómo funciona el tuyo.


[offtopic]

En realidad, venir para recordar que existen los buscadores y que tienen que usarlos ya es un clásico. Pero este post me llamó la atención por el título. Pensé que podía estar haciendo alguna alusión a un viejo tema de la Penguin Cafe Orchestra, que fue cortina en todos sus ciclos del programa de televisión Caloi en su tinta.



Telephone And Rubber Band (Teléfonos y Rayas ), por Penguin Cafe Orchestra




[/offtopic]
  #6 (permalink)  
Antiguo 15/08/2012, 13:02
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: Validar telefono con rayas

Gracias a tu respuesta :)
Yo lo que intento hacer es que lo que tu dices se valide en tiempo real ...
De modo que en el momento de escribir algo muestre un <spam> con los errores para que el usuario los corrige.
Yo se como hacer que se validen despues de pulsar el boton submit pero con php pero yo quiero en tiempo real . Voy a intentarlo . A ver si lo consigo aunque soy novato.

Gracias
  #7 (permalink)  
Antiguo 16/08/2012, 10:17
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Validar telefono con rayas

Eso se puede manejar con el evento (como no pusiste el ejemplo para probarlo, no podemos adivinar cuál usas), y está en mil temas de este sitio, además de en todos los tutoriales.
Si el usuario escribe bien, pasa. Si escribe un caracter mal, al evento se le devuelve false para que no lo escriba, y se puede aparecer también un mensaje de alerta (no un mensje de publicidad no deseada).

no pintar caracter no valido en un input



Continuación del [offtopic]

¿Alguien sabe por qué en español (al menos en Argentina) a ese tema lo tradujeron como "Teléfonos y rayas" y no como "Teléfono y bandita elástica" ?

[/offtopic]

[edit]

Gracias por la valoración, recién la veo .

[/edit]

Última edición por furoya; 16/08/2012 a las 10:19 Razón: Agradecer tarde, pero seguro.

Etiquetas: javascript-function, numero, validar_telefono
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:04.