Ver Mensaje Individual
  #6 (permalink)  
Antiguo 25/03/2008, 09:12
koringo
 
Fecha de Ingreso: septiembre-2006
Mensajes: 28
Antigüedad: 18 años, 5 meses
Puntos: 0
Pregunta Re: Expresion Regular Telefonos

Mira he aqui el codigo que he resuelto hasta ahora
observa que cuando pierdo el foco la funcion evalua que tipo es si es de 7 0 9 digitos y listo, pero me surge un gran problema nuevamente......

resulta que tengo varios formatos por ejemplo el de nueve digitos
que es un patron de var pat = new Array(2,3,2,2);que cumple para
99-999-99-99 pero se puede dar esto 9-999-99-99 que tambien es valido
ya no seria de 9 sino de 8 entonces tocaria crear una opcion para esto,
resulta que comence a observar esto y tengo patrones que pueden ser mas o menos digitos de los acostumbrados para dar el formato, y la verdad ya no que hacer para esto, debido a que este codigo se volveria gigantesto estoy pensando en volverlo mas dinamico espero me dar alguna idea al respecto y gracias.


<input name="txtTelefono" value="" onblur="ValidarFormatoTelefono(this,'-',true);">

function ValidarFormatoTelefono(objeto,sep,numeros){
if(objeto.value){
valor = objeto.value
largo = valor.length
valor = valor.split(sep)
valor2 = ''

for(r=0;r<valor.length;r++){
valor2 += valor[r]
}
if ((numeros)){
for(z=0;z<valor2.length;z++){
if(isNaN(valor2.charAt(z))){
letra = new RegExp(valor2.charAt(z),"g")
valor2 = valor2.replace(letra,"")
}
}
}//Fin if(numeros)

switch(largo){
case 7: //telefono normal
valor = ''
valor3 = new Array()
//var re1 = /^\d{3}\D?\d{2}\D?\d{2}$/
var pat = new Array(3,2,2);

for(s=0; s<pat.length; s++){
valor3[s] = valor2.substring(0,pat[s])
valor2 = valor2.substr(pat[s])
}
for(q=0;q<valor3.length; q++){
if(q ==0){
valor = valor3[q]

}
else{
if(valor3[q] != ""){
valor += sep + valor3[q]
}
}
}
break
case 9:
//telefono con indicativo
//var re6 = /\D*\d{1,2}\D*\d{3}\D?\d{2}\D?\d{2}$/
//telefono solo con indicativo 99-999-99-99
valor = ''
valor3 = new Array()
var pat = new Array(2,3,2,2);
for(s=0; s<pat.length; s++){
valor3[s] = valor2.substring(0,pat[s])
valor2 = valor2.substr(pat[s])
}
for(q=0;q<valor3.length; q++){
if(q ==0){
valor = valor3[q]

}
else{
if(valor3[q] != ""){
valor += sep + valor3[q]
}
}
}
break


default:
valor=valor.slice(0,(valor.length-1));
alert('Formato Telefonico No Valido');
// objeto.value="";


}
objeto.value = valor;
}
}

<input name="txtTelefono" value="" onblur="ValidarFormatoTelefono(this,'-',true);">