Foros del Web » Programando para Internet » Javascript »

ayuda con keycode en javascript

Estas en el tema de ayuda con keycode en javascript en el foro de Javascript en Foros del Web. que tal amigos? hice una funcion con la cual permito el ingreso de algunos caracteres especiales en un input. esta es la funcion: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 16/07/2009, 07:05
Avatar de hschimpf  
Fecha de Ingreso: junio-2009
Ubicación: in the World Wide Web
Mensajes: 140
Antigüedad: 14 años, 10 meses
Puntos: 17
ayuda con keycode en javascript

que tal amigos?
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
  1. function setInput(keydown, letras, numeros, espacios, caracteres) {
  2.     /* obtengo el keycode desde el evento which */
  3.     var key = keydown.which;
  4.     /* creo un array donde guardo todos los keycode permitidos */
  5.     var arrayKeys = new Array();
  6.                
  7.     /* Agrego los keycode correspondientes a las funciones de teclado comunes */
  8.     /* (33-36) RePag, AvPag, Fin, Inicio */
  9.     /* (37-40) Flechas de navegacion     */
  10.     for (var i=33;i<=40;i++) { arrayKeys[i] = i; }
  11.     arrayKeys[8] = 8;    /* backspace */
  12.     arrayKeys[9] = 9;    /* tabulador */
  13.     arrayKeys[16] = 16;    /* shift */
  14.     arrayKeys[46] = 46;    /* suprimir */
  15.  
  16.     /* Verifico si se permiten letras */
  17.     if (letras) {
  18.         /* si se permiten letras, agregamos los keycode */
  19.         for (var i=65;i<=90;i++) { arrayKeys[i] = i; }
  20.     }
  21.  
  22.     /* Verifico si se permiten numeros */
  23.     if (numeros) {
  24.         /* si se permiten numeros, agrego los keycode */
  25.         for (var i=48;i<=57;i++) { arrayKeys[i] = i; }    /* Numeros encima del teclado */
  26.         for (var i=96;i<=105;i++) { arrayKeys[i] = i; }    /* Teclado numerico */
  27.     }
  28.  
  29.     /* verifico si se permiten espacios */
  30.     if (espacios) { arrayKeys[32] = 32; }
  31.  
  32.     /* Verifico si se permiten otros caracteres recibidos por parametros */
  33.     if (caracteres) {
  34.         /* si se permiten otros caracteres descompongo la cadena y agrego los keycode */
  35.         caracteres = caracteres.split(";");
  36.         var indice;
  37.         for (var i in caracteres) {
  38.             /* recorro el array y agrelo los keycode de cada caracter */
  39.             /* los parametros pueden ser un simbolo o el keycode necesitado ej: '-;27;.' */
  40.             if (isNaN(caracteres[i])) {
  41.                 /* verifico que el caracter sea uno solo (logitud) */
  42.                 if (caracteres[i].length == 1) {
  43.                     indice = caracteres[i].charCodeAt(0);
  44.                 } else {
  45.                     alert("Parametro incorrecto!\nLos caracteres no deben ser una cadena\nCadena recibida: " + caracteres[i]);
  46.                     indice = false;
  47.                 }
  48.             } else {
  49.                 indice = caracteres[i];
  50.             }
  51.             if (indice) {
  52.                 arrayKeys[indice] = indice;
  53.             }
  54.         }
  55.     }
  56.     /* recorro el array para preguntar por el key presionado */
  57.     for (var i in arrayKeys) {
  58.         if (arrayKeys[i] == key) {
  59.             /* si el key presionado esta dentro del array retornamos True */
  60.             return true;
  61.         }
  62.     }
  63.     /* si llego aqui es porque el keycode no esta permitido, retorno false */
  64.     return false;
  65. }

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,'-');"> 
deberia permitir solo el ingreso de numeros y el caracter ' - ' y no permite el guion por ser un codigo diferente.
Existe alguna funcion como charCodeAt() pero para obtener el keycode? como decir keyCodeAt()..?
Gracias de antemano!
  #2 (permalink)  
Antiguo 16/07/2009, 07:42
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: ayuda con keycode en javascript

Hola

¿No te sería mas sencillo usar expresiones regulares?

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 16/07/2009, 08:22
Avatar de hschimpf  
Fecha de Ingreso: junio-2009
Ubicación: in the World Wide Web
Mensajes: 140
Antigüedad: 14 años, 10 meses
Puntos: 17
Respuesta: ayuda con keycode en javascript

Cita:
Iniciado por Adler Ver Mensaje
¿No te sería mas sencillo usar expresiones regulares?
no entiendo a que te referis con expresiones regulares..
  #4 (permalink)  
Antiguo 16/07/2009, 11:38
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: ayuda con keycode en javascript

Hola


Una validación con expresiones regulares


Pequeña introducción con ejemplo

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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 23:33.