2012-08-08 16 views
6

Estoy tratando de deshabilitar el ingreso de todos los demás caracteres en el ingreso de texto.

Dado que para obtener el $ tiene que pulsar la tecla cambio y la tecla . No estoy seguro de cómo obtendrías el código de tecla para algo así?

+0

duplicado posible de [¿Cuáles son los JavaScript KeyCodes?] (Http://stackoverflow.com/questions/5603195/what-are-the-javascript-keycodes) –

Respuesta

5

Los códigos clave se refieren solo a las teclas. $ es un personaje, logrado a través de dos llaves, Shift y 4. No existe un código clave explícitamente $cuando se utiliza onkeydown

Editar: Se señaló por Edward que onkeypress utiliza combinaciones de teclas, y tiene código clave de para combinaciones. Aprenda algo nuevo todos los días :)

Here's some code, editado del ejemplo onkeydown proporcionado por el MDN, para detectar códigos de tecla.

Here's the fiddle actualizado para ser compatible con Firefox, con la ayuda de this S.O. post. La solución de JQuery también funciona, si te balanceas de esa manera.

+0

El violín de su edición da este resultado en firefox12: 'keyCode para la tecla presionada: 0' (en cualquier tecla que presione ..) – GitaarLAB

+0

@GitaarLAB Qué extraño. Funciona en IE y Chrome. No puedo imaginarme que Firefox no admitiera 'onkeypress', aunque cambiarlo por' onkeydown' funciona en Firefox. –

+0

Mira [este S.O. hilo de información sobre onkeypress en Firefox] (http://stackoverflow.com/questions/4496910/onkeypress-event-not-working-in-firefox) Duda es el único también –

2

Entonces NO lo use de esta manera para resolver su problema: ya que no puede predecir que cada distribución de teclado siempre tendrá $ -sign ingresado como shift + 4.
¡Aún puede obtener el código clave 4 y comprobar si se presionó shift, pero no puede estar seguro de esto!

Así sería mejor simplemente reemplazar todos los caracteres ilegales en sus campos (antes de enviar los datos). Piensa: str.replace()
¡También puedes verificar tu conjunto de caracteres ilegales en el evento onkeyup del cuadro de entrada, reemplazando efectivamente todos los caracteres ilegales mientras escribes!
Me gusta: onkeyup="this.value.replace(/[your illegal characters]/gi, '')"
Eso debería hacer lo que quiera.

Tenga en cuenta: NUNCA debe confiar en la entrada del navegador, y todavía debe filtrar esta entrada en su script de recepción!

¡Buena suerte!

5

No hay onkeydown código clave, como se ha dicho anteriormente por ngmiceli

Aunque, existe onkeypress código clave y es igual a 36.

JavaScript Event KeyCode Test Page

+0

+1 ¡Gracias por eso! –

1

no existe un código clave para $, ya que no es una clave válida - tiene que acceder a través de algún tipo de palanca de cambios.

Por lo general, debe realizar una comprobación para ver si la palanca de cambios estaba activa, y escuchar el evento keypress en la clave correspondiente.Algo como esto para un teclado QWERTY en su instancia:

var shiftPressed = false; 

$(window).keydown(function(e) { 
    if(e.which == 16) { shiftPressed = true; } 
    if(e.which == 52 && shiftPressed) 
    { 
     // Do whatever here... 
    } 
}); 

$(window).keyup(function(e) { 
    if(e.which == 16) { shiftPressed = false; } 
}); 
0

onkeypress - El código de caracteres Unicode es: 36

onkeydown - La Llave de código Unicode es: 52

Cuestiones relacionadas