Hola buen día, tengo una función actualmente que mientras se escribe valida un formato (patrón) por ej: 123-45-67 y llega hasta ahí...y lo hace bien, he intentado modificar el código para que reciba estos formatos
123-45-67 (teléfono de 7 dígitos)
(123)-456-78-90 (teléfono celular 10 dígitos)
(012)-345-67-89-(0123) (telefono de 7 digitos pero con codigo de area y extensión)
(claro no requiero que funcione con paréntesis es solo para ilustrar el ejemplo).
Me ha sido complicado hacerlo, he aquí el código por si alguien le interesa
funciona con estos formato 123-45-67 y 123-456-78-90
en caso de que también les sea difícil hacerlo, Si me pueden colaborar con las expresiones regulares que me permitan solucionar este problema por el momento.
Gracias.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta name="author" content="Wilmar">
<title>Untitled 2</title>
<script type="text/javascript">
var patron = new Array(3,2,2);
var patron2 = new Array(3,3,2,2);
function ValidarFormatoTelefono(objeto,sep,pat,numeros){
if(objeto.valant != objeto.value){
valor = objeto.value // valor del objeto
largo = valor.length // tamaño del objeto
valor = valor.split(sep) // toma el valor y lo va separando
valor2 = ''
for(r=0;r<valor.length;r++){
valor2 += valor[r] // valor2 es un array auxiliar que contiene la cadena
}
if(numeros){ // Si el parametro es true, evaluar la ocurrencia de
for(z=0;z<valor2.length;z++){ // una letra y con valor2.replace la elimina mientras
if(isNaN(valor2.charAt(z))){ // escribe
letra = new RegExp(valor2.charAt(z),"g")
valor2 = valor2.replace(letra,"")
}
}
}//Fin if(numeros)
valor = ''
valor3 = new Array()
for(s=0; s<pat.length; s++){ // aqui se genera la cadena segun el patron
valor3[s] = valor2.substring(0,pat[s]) // y cada vez que se digita un numero evalua
valor2 = valor2.substr(pat[s]) // la posicion y comienza darle formato
}
for(q=0;q<valor3.length; q++){
if(q ==0){
valor = valor3[q]
}
else{
if(valor3[q] != ""){
valor += sep + valor3[q] //aqui ya termina de hacer el formato 999-99-99
}
}
}
objeto.value = valor
objeto.valant = valor
}//Fin if(objeto.valant != d.value)
}
</script>
</head>
<body>
<input name="txtTelefono" value="" onkeyup="ValidarFormatoTelefono(this,'-',patron,true);">
<br>
<br>
<input name="txtTelefono" value="" onkeyup="ValidarFormatoTelefono(this,'-',patron2,true);">
</body>
</html>