hice una funcion con la cual permito el ingreso de algunos caracteres especiales en un input.
esta es la funcion:
Código JAVASCRIPT:
Ver original
function setInput(keydown, letras, numeros, espacios, caracteres) { /* obtengo el keycode desde el evento which */ var key = keydown.which; /* creo un array donde guardo todos los keycode permitidos */ var arrayKeys = new Array(); /* Agrego los keycode correspondientes a las funciones de teclado comunes */ /* (33-36) RePag, AvPag, Fin, Inicio */ /* (37-40) Flechas de navegacion */ for (var i=33;i<=40;i++) { arrayKeys[i] = i; } arrayKeys[8] = 8; /* backspace */ arrayKeys[9] = 9; /* tabulador */ arrayKeys[16] = 16; /* shift */ arrayKeys[46] = 46; /* suprimir */ /* Verifico si se permiten letras */ if (letras) { /* si se permiten letras, agregamos los keycode */ for (var i=65;i<=90;i++) { arrayKeys[i] = i; } } /* Verifico si se permiten numeros */ if (numeros) { /* si se permiten numeros, agrego los keycode */ for (var i=48;i<=57;i++) { arrayKeys[i] = i; } /* Numeros encima del teclado */ for (var i=96;i<=105;i++) { arrayKeys[i] = i; } /* Teclado numerico */ } /* verifico si se permiten espacios */ if (espacios) { arrayKeys[32] = 32; } /* Verifico si se permiten otros caracteres recibidos por parametros */ if (caracteres) { /* si se permiten otros caracteres descompongo la cadena y agrego los keycode */ caracteres = caracteres.split(";"); var indice; for (var i in caracteres) { /* recorro el array y agrelo los keycode de cada caracter */ /* los parametros pueden ser un simbolo o el keycode necesitado ej: '-;27;.' */ if (isNaN(caracteres[i])) { /* verifico que el caracter sea uno solo (logitud) */ if (caracteres[i].length == 1) { indice = caracteres[i].charCodeAt(0); } else { alert("Parametro incorrecto!\nLos caracteres no deben ser una cadena\nCadena recibida: " + caracteres[i]); indice = false; } } else { indice = caracteres[i]; } if (indice) { arrayKeys[indice] = indice; } } } /* recorro el array para preguntar por el key presionado */ for (var i in arrayKeys) { if (arrayKeys[i] == key) { /* si el key presionado esta dentro del array retornamos True */ return true; } } /* si llego aqui es porque el keycode no esta permitido, retorno false */ return false; }
el problema lo tengo en el 4to parametro donde le envio los caracteres extra que quiero permitir. Con la funcion string.charCodeAt(index) obtengo el charCode del caracter, pero no es lo mismo que el keyCode por ej el guion ' - ' en keyCode es 109 y en charCode es 45. De esta manera usando la funcion asi:
Código HTML:
<INPUT type="text" onkeydown="javascript:return setInput(event,false,true,false,'-');">
Existe alguna funcion como charCodeAt() pero para obtener el keycode? como decir keyCodeAt()..?
Gracias de antemano!
![de acuerdo](http://static.forosdelweb.com/fdwtheme/images/smilies/dedosarriba.png)