2012-04-17 18 views
31

Ok, ¿cuál es la diferencia entre .keypress y .keydown/.keyup? En este momento estoy usando .keydown, que devuelve un valor .38 de mi clave, ahora si lo cambio a .keypress, devuelve un valor de 109 para esa misma clave. ¿Cuál es la diferencia y por qué los valores son diferentes para la misma clave?jQuery .keypress & .keydown .which

+0

¿qué navegador estás usando? – Mathletics

+0

Diferentes navegadores deberían dar como resultado un evento diferente pero con comandos de teclado diferentes – SpYk3HH

+0

Tengo un objeto json con cada evento clave y cada uno dividido por navegador, lo publicaré demasiado rápido con las tres teclas y podemos probarlo , gimmie como 10 minutos – SpYk3HH

Respuesta

2

KeyPress ocurre después de KeyDown. De modo que puede usar KeyDown para determinar qué clave es, luego KeyPress para deshabilitar ese carácter.

14

debe leer el siguiente mensaje: http://javascript.info/tutorial/keyboard-events

Keydown desencadena en cualquier pulsación de tecla y da escaneo de código. La tecla presionada se activa después de la tecla y proporciona el código de char, pero solo está garantizado para las teclas de caracteres.

21

Estaré d $%^@ d, realmente hay una diferencia con la pulsación de teclas y todo este tiempo nunca me di cuenta. lol

Ver el violín y probar algo como la letra "r"

http://jsfiddle.net/SpYk3/NePCm/

De alguna manera nunca prestó atención a este

encontrado más información:

http://www.quirksmode.org/js/keys.html

"Las dos propiedades son keyCode y charCode. Ponga (simplemente) simplemente, keyCode dice algo acerca de la tecla del teclado real que el usuario presionó, mientras que charCode da el valor ASCII del carácter resultante. Estos bits de información no necesitan ser iguales; por ejemplo, una minúscula 'a' y una mayúscula 'A' tienen el mismo keyCode, porque el usuario presiona la misma tecla, pero charCode diferente porque el carácter resultante es diferente.

Explorer y Opera no asistencia charCode. Sin embargo, dan la información del personaje en keyCode, pero solo con onkeypress. onkeydown y -upkeyCode contiene información clave."

+0

Sí, entonces ¿por qué estoy confuso de por qué? – ChrisMJ

+0

como jbl señaló en su respuesta, [esta página] (http://javascript.info/tutorial/keyboard-events) describe el problema un poco, pero todavía no parece responder la pregunta en su totalidad . Tal vez leí la página incorrectamente, pero en un momento aún señala que el código de carbono está siendo extraído en ambos, simplemente uno vuelve a generar un valor diferente. Quizás una mirada en algún js doc antiguo encuentre la respuesta. Estoy buscando ahora, también voy a volver a escribir mi objeto para incluir las diferencias de pulsación de teclas – SpYk3HH

+0

, aunque sugeriría evitar presionar las teclas ya que no activará eventos predecibles como keydown y keyup – SpYk3HH

5

En casos normales, ir a por keyup:

$(document).keyup(function(e){ 
    console.log(e.which); 
}); 

Razones:

  1. keydown mantiene a disparar cuando el usuario tiene las llaves abajo, mientras keypress y keyup fuego sólo una vez
  2. .
  3. keypress no detecta teclas especiales (por ejemplo, SHIFT), keydown y keyup do.