ejemplos ejemplo javascript jquery events keyboard keycode

ejemplos - onkeyup javascript ejemplo



Cómo saber si.keyup() es una clave de caracteres(jQuery) (6)

Cómo saber si .keyup () es una clave de caracteres (jQuery)

$("input").keyup(function() { if (key is a character) { //such as a b A b c 5 3 2 $ # ^ ! ^ * # ...etc not enter key or shift or Esc or space ...etc /* Do stuff */ } });


Esto me ayudó:

$("#input").keyup(function(event) { //use keyup instead keypress because: //- keypress will not work on backspace and delete //- keypress is called before the character is added to the textfield (at least in google chrome) var searchText = $.trim($("#input").val()); var c= String.fromCharCode(event.keyCode); var isWordCharacter = c.match(//w/); var isBackspaceOrDelete = (event.keyCode == 8 || event.keyCode == 46); // trigger only on word characters, backspace or delete and an entry size of at least 3 characters if((isWordCharacter || isBackspaceOrDelete) && searchText.length > 2) { ...


No estoy totalmente satisfecho con las otras respuestas dadas. Todos tienen algún tipo de falla para ellos.

Usar keyPress con event.which no es confiable porque no puede capturar un retroceso o una eliminación (como lo menciona Tarl). Usar keyDown (como en las respuestas de Niva y Tarl) es un poco mejor, pero la solución es defectuosa porque intenta usar event.keyCode con String.fromCharCode() (keyCode y charCode no son lo mismo!).

Sin embargo, lo que tenemos que hacer con el evento de keydown o keyup es la clave real que se presionó ( event.key ). Por lo que puedo decir, cualquier key con una longitud de 1 es un carácter (número o letra) independientemente del teclado de idioma que esté utilizando. Por favor corrígeme si eso no es verdad!

Luego está esa respuesta muy larga de asdf. Eso podría funcionar perfectamente, pero parece excesivo.

Así que aquí hay una solución simple que atrapará a todos los personajes, retrocede y elimina. (Nota: la keyup o la keydown funciona aquí, pero la keypress no)

$("input").keydown(function(e) { var isWordCharacter = event.key.length === 1; var isBackspaceOrDelete = (event.keyCode == 8 || event.keyCode == 46); if (isWordCharacter || isBackspaceOrDelete) { } });


No puede hacer esto de manera confiable con el evento de keyup . Si quieres saber algo sobre el personaje que se escribió, debes usar el evento de keypress .

El siguiente ejemplo funcionará todo el tiempo en la mayoría de los navegadores, pero hay algunos casos extremos que debe tener en cuenta. Para lo que en mi opinión es la guía definitiva sobre esto, vea http://unixpapa.com/js/key.html .

$("input").keypress(function(e) { if (e.which !== 0) { alert("Charcter was typed. It was: " + String.fromCharCode(e.which)); } });

keyup y keydown brindan información sobre la tecla física que se presionó. En los teclados estándar de EE. UU. / RU en sus diseños estándar, parece que hay una correlación entre la propiedad keyCode de estos eventos y el carácter que representan. Sin embargo, esto no es confiable: diferentes diseños de teclado tendrán diferentes asignaciones.


Quería hacer exactamente esto, y pensé en una solución que implicara tanto el keyup como los eventos de pulsación de tecla .

(No lo he probado en todos los navegadores, pero usé la información compilada en http://unixpapa.com/js/key.html )

Editar: reescribió como un plugin jQuery.

(function($) { $.fn.normalkeypress = function(onNormal, onSpecial) { this.bind(''keydown keypress keyup'', (function() { var keyDown = {}, // keep track of which buttons have been pressed lastKeyDown; return function(event) { if (event.type == ''keydown'') { keyDown[lastKeyDown = event.keyCode] = false; return; } if (event.type == ''keypress'') { keyDown[lastKeyDown] = event; // this keydown also triggered a keypress return; } // ''keyup'' event var keyPress = keyDown[event.keyCode]; if ( keyPress && ( ( ( keyPress.which >= 32 // not a control character //|| keyPress.which == 8 || // /b //|| keyPress.which == 9 || // /t //|| keyPress.which == 10 || // /n //|| keyPress.which == 13 // /r ) && !( keyPress.which >= 63232 && keyPress.which <= 63247 ) && // not special character in WebKit < 525 !( keyPress.which == 63273 ) && // !( keyPress.which >= 63275 && keyPress.which <= 63277 ) && // !( keyPress.which === event.keyCode && // not End / Home / Insert / Delete (i.e. in Opera < 10.50) ( keyPress.which == 35 || // End keyPress.which == 36 || // Home keyPress.which == 45 || // Insert keyPress.which == 46 || // Delete keyPress.which == 144 // Num Lock ) ) ) || keyPress.which === undefined // normal character in IE < 9.0 ) && keyPress.charCode !== 0 // not special character in Konqueror 4.3 ) { // Normal character if (onNormal) onNormal.call(this, keyPress, event); } else { // Special character if (onSpecial) onSpecial.call(this, event); } delete keyDown[event.keyCode]; }; })()); }; })(jQuery);


Si solo necesita excluir las teclas enter , escape y spacebar , puede hacer lo siguiente:

$("#text1").keyup(function(event) { if (event.keyCode != ''13'' && event.keyCode != ''27'' && event.keyCode != ''32'') { alert(''test''); } });

Véalo aquí.

Puede consultar la lista completa de códigos clave aquí para su modificación posterior.


Nota: En retrospectiva, esta fue una respuesta rápida y sucia, y puede no funcionar en todas las situaciones. Para tener una solución confiable, vea la respuesta de Tim Down (copie la copia aquí ya que esta sigue recibiendo opiniones y votos ascendentes):

No puede hacer esto de manera confiable con el evento de teclado. Si quieres saber algo sobre el personaje que se escribió, debes usar el evento de pulsación de tecla.

El siguiente ejemplo funcionará todo el tiempo en la mayoría de los navegadores, pero hay algunos casos extremos que debe tener en cuenta. Para lo que en mi opinión es la guía definitiva sobre esto, vea http://unixpapa.com/js/key.html .

$("input").keypress(function(e) { if (e.which !== 0) { alert("Charcter was typed. It was: " + String.fromCharCode(e.which)); } });

keyup y keydown brindan información sobre la tecla física que se presionó. En los teclados estándar de EE. UU. / RU en sus diseños estándar, parece que hay una correlación entre la propiedad keyCode de estos eventos y el carácter que representan. Sin embargo, esto no es confiable: diferentes diseños de teclado tendrán diferentes asignaciones.

La siguiente fue la respuesta original, pero no es correcta y puede no funcionar de manera confiable en todas las situaciones.

Para hacer coincidir el código clave con un carácter de palabra (por ej., A coincidiría, el space no)

$("input").keyup(function(event) { var c= String.fromCharCode(event.keyCode); var isWordcharacter = c.match(//w/); });

Ok, esa fue una respuesta rápida. El enfoque es el mismo, pero ten cuidado con los problemas del código clave, mira este article en el modo peculiar.