Foros del Web » Programando para Internet » Javascript »

Validar telefonos españoles en formulario

Estas en el tema de Validar telefonos españoles en formulario en el foro de Javascript en Foros del Web. Hola, tengo este codigo, que si el telefono no empieza por 6,8 u 9 da una alerta, al igual que si no contiene 9 numeros ...
  #1 (permalink)  
Antiguo 20/02/2012, 17:13
Avatar de williamhpf  
Fecha de Ingreso: mayo-2009
Mensajes: 144
Antigüedad: 15 años
Puntos: 8
Pregunta Validar telefonos españoles en formulario

Hola, tengo este codigo, que si el telefono no empieza por 6,8 u 9 da una alerta, al igual que si no contiene 9 numeros hasta ahi bien.
Pero luego de la alerta no me deja el campo en blanco y se envia de todas formas.
Lo uso llamandolo asi:

<input type="text" onblur="validar(this)" />

¿Que le falta al codigo para que deje el campo en blanco?


Código PHP:
function validar(obj) {
  
num=obj.value.charAt(0);
  if(
num!='6' && num!='8' && num!='9') {
    
alert('Debe empezar por 6, 8 ó 9');
    
obj.focus();
  }
if(
obj.value.length<9){
alert('Debe tener 9 cifras')
obj.focus();
}


Gracias a todos
__________________
Electricistas 24 Horas
  #2 (permalink)  
Antiguo 21/02/2012, 03:06
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 2 meses
Puntos: 62
Respuesta: Validar telefonos españoles en formulario

para ponerlo vacio:

obj.value = '';

para no enviarlo:

return false;
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 21/02/2012, 03:43
Avatar de williamhpf  
Fecha de Ingreso: mayo-2009
Mensajes: 144
Antigüedad: 15 años
Puntos: 8
Respuesta: Validar telefonos españoles en formulario

Cita:
Iniciado por ZiTAL Ver Mensaje
para ponerlo vacio:

obj.value = '';

para no enviarlo:

return false;


No me funciona o no se hacerlo, opto por la segunda opcion, lo he puesto asi

Código PHP:
function validar(obj) {
  
num=obj.value.charAt(0);
  if(
num!='6' && num!='8' && num!='9') {
    
alert('Debe empezar por 6, 8 ó 9');
    
obj.focus();
  }
if(
obj.value.length<9){
alert('Debe tener 9 cifras')
obj.focus();
obj.value '';
return 
false;
}

__________________
Electricistas 24 Horas
  #4 (permalink)  
Antiguo 21/02/2012, 03:55
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 2 meses
Puntos: 62
Respuesta: Validar telefonos españoles en formulario

aquí tienes un ejemplo hecho con expresiones regulares:

las expresiones regulares son entre / y /
^: le decimos que el texto tiene que empezar con lo que viene detrás:
(6|8|9): le decimos que el caracter que viene puede ser 6, 8 o 9
[0-9]{8}: le decimos que tiene que haber 8 numeros de 0 al 9
$: termina el texto

Código Javascript:
Ver original
  1. if(obj.value.match(/^(6|8|9)[0-9]{8}$/))
  2.             return true;
  3.         else
  4.             alert('error');
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #5 (permalink)  
Antiguo 21/02/2012, 04:04
Avatar de williamhpf  
Fecha de Ingreso: mayo-2009
Mensajes: 144
Antigüedad: 15 años
Puntos: 8
Respuesta: Validar telefonos españoles en formulario

Gracias, pero estoy en la misma, cierro la alerta "error" completo el formulario y lo envio.
Con un telefono mal.
Y lo que quiero es que si da error borre el numero de telefono, porque al final tengo otro validador que si faltan datos no se envia.

Pero si el telefono es erroneo, despues de la alerta el campo telefono debe quedar vacio para que el usuario introduzca el numero correcto.
__________________
Electricistas 24 Horas
  #6 (permalink)  
Antiguo 21/02/2012, 04:05
Avatar de williamhpf  
Fecha de Ingreso: mayo-2009
Mensajes: 144
Antigüedad: 15 años
Puntos: 8
Respuesta: Validar telefonos españoles en formulario

Me gustaba mas el codigo de antes pero no supe implementarlo.
__________________
Electricistas 24 Horas
  #7 (permalink)  
Antiguo 21/02/2012, 04:06
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 2 meses
Puntos: 62
Respuesta: Validar telefonos españoles en formulario

Código Javascript:
Ver original
  1. if(obj.value.match(/^(6|8|9)[0-9]{8}$/))
  2.   return true;
  3. else
  4. {
  5.   obj.value = '';
  6.   obj.focus();
  7.   return false;
  8. }
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #8 (permalink)  
Antiguo 21/02/2012, 04:21
Avatar de williamhpf  
Fecha de Ingreso: mayo-2009
Mensajes: 144
Antigüedad: 15 años
Puntos: 8
De acuerdo Solucionado

function validar(obj) {
num=obj.value.charAt(0);
if(num!='6' && num!='8' && num!='9') {
alert('El teléfono es incorrecto!!!');
obj.value = '';
obj.focus();
return false;
}
if(obj.value.length<9){
alert('El teléfono esta incompleto!!!')
obj.value = '';
obj.focus();
return false;
}
}

Funciona, aunque en firefox si picas en otro campo te da el error pero el mouse se queda en el otro campo, no recupera el focus, en explorer si, pero bueno eso es lo de menos.

Gracias Zital por tu tiempo.
__________________
Electricistas 24 Horas
  #9 (permalink)  
Antiguo 21/02/2012, 04:23
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Simplemente comentar que ya hay números de móvil que empiezan con 7 :)
  #10 (permalink)  
Antiguo 21/02/2012, 04:33
Avatar de williamhpf  
Fecha de Ingreso: mayo-2009
Mensajes: 144
Antigüedad: 15 años
Puntos: 8
Respuesta: Validar telefonos españoles en formulario

Ostias!! de que compañia?
__________________
Electricistas 24 Horas
  #11 (permalink)  
Antiguo 21/02/2012, 07:05
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
De todas, aunque la primera en distribuirlos creo que ha sido Movistar.

Etiquetas: españoles, formulario, input
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 01:21.