Comment savoir si .keyup () est une clé de caractère (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 */
}
});
Comment savoir si .keyup () est une clé de caractère (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 */
}
});
Vous ne pouvez pas le faire de manière fiable avec l' keyup
événement. Si vous voulez savoir quelque chose sur le personnage qui a été tapé, vous devez utiliser l' keypress
événement à la place.
L'exemple suivant permet de travailler tout le temps dans la plupart des navigateurs, mais il existe quelques cas de bord que vous devez être conscients de. Pour ce qui est de mon point de vue le guide définitif sur cette question, voir 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
et keydown
vous donner des informations sur la physique de la touche qui a été pressée. Sur le standard US/UK claviers dans leurs mises en page standard, il semble qu'il y ait une corrélation entre l' keyCode
de la propriété de ces événements et les personnages qu'ils représentent. Cependant, ce n'est pas fiable: les différentes dispositions de clavier différentes qui ont des mappages.
Remarque: avec le recul, c'était un moyen rapide et sale de réponse, et peut ne pas fonctionner dans toutes les situations. Pour avoir une solution fiable, voir Tim de Down réponse (le copier-coller que ici que cette réponse est encore en train de vues et de gasp upvotes):
Vous ne pouvez pas le faire de manière fiable avec de l'événement keyup. Si vous voulez savoir quelque chose à propos du personnage qui a été tapé, vous devez utiliser la événement keypress à la place.
L'exemple suivant permet de travailler tout le temps dans la plupart des navigateurs, mais il y a quelques cas limites dont vous devez être conscient de. Pour ce qui est en mon point de vue, le guide définitif sur cette question, voir 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
etkeydown
vous donner des informations sur la clé physique qui a été pressé. Sur le standard US/UK claviers dans leurs mises en page standard, il regarde comme il existe une corrélation entre l'keyCode
de la propriété de ces événements et les personnages qu'ils représentent. Cependant, ce n'est pas fiable: les différentes dispositions de clavier différentes qui ont des mappages.
La suite était à l'origine de réponse, mais n'est pas correct et ne peut pas fonctionner de manière fiable dans toutes les situations.
Pour faire correspondre le mot de code avec un caractère de mot (par exemple., a
correspondent. space
ne serait pas)
$("input").keyup(function(event)
{
var c= String.fromCharCode(event.keyCode);
var isWordcharacter = c.match(/\w/);
});
Ok, c'était une réponse rapide. L'approche est la même, mais méfiez-vous du mot de code, voir cet article dans quirksmode.
Cela m'a aidé:
$("#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)
{ ...
Si vous devez uniquement exclure les clés enter
, escape
et spacebar
, vous pouvez procéder comme suit:
$("#text1").keyup(function(event) {
if (event.keyCode != '13' && event.keyCode != '27' && event.keyCode != '32') {
alert('test');
}
});
Vous pouvez vous référer à la liste complète des codes clés ici pour votre modification ultérieure.
Je voulais faire exactement cela, et je pensais à une solution impliquant à la fois la keyup et les événements de pression de touche.
(Je ne l'ai pas testé dans tous les navigateurs, mais j'ai utilisé les informations compilées à l' adresse http://unixpapa.com/js/key.html )
Edit: ré-écrit sous forme de 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);
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.