JQueryで左右の矢印キーを押してイベントを発生させようとしています。次のコードを使用して、任意の英数字キーでイベントを起動できますが、カーソルキー(上、下、左、右)は何も起動しません。私は主にIEユーザーのためにサイトを開発しています。これは基幹業務アプリであるためです。ここで何か間違ったことをしていますか?
$('document').keypress(function(e){
switch (e.which) {
case 40:
alert('down');
break;
case 38:
alert('up');
break;
case 37:
alert('left');
break;
case 39:
alert('right');
break;
default:
alert('???');
}
});
e.whichはIE trye.keyCode、IEをターゲットにしている場合は、keypress()の代わりにkeydown()を使用することもできます。
詳細については、 http://unixpapa.com/js/key.html を参照してください。
JQueryで、私はそれをやった この方法 :
function checkKey(e){
switch (e.keyCode) {
case 40:
alert('down');
break;
case 38:
alert('up');
break;
case 37:
alert('left');
break;
case 39:
alert('right');
break;
default:
alert('???');
}
}
if ($.browser.mozilla) {
$(document).keypress (checkKey);
} else {
$(document).keydown (checkKey);
}
また、これらのプラグインを試してみてください。これらはすべてあなたのために機能するように見えます:
http://www.openjs.com/scripts/events/keyboard_shortcuts
http://www.webappers.com/2008/07/31/bind-a-hot-key-combination-with-jquery-hotkeys/
文字列にWordの「ドキュメント」があります。変化する:
$('document').keypress(function(e){
に
$(document).keypress(function(e){
もちろんこれは閉じられた問題です、あなたの議論に何かを追加したいと思います
Mozillaでは、このコードの奇妙な動作を観察しました
$(document).keydown(function(){
//my code
});
コードは2回トリガーされます。デバッグすると、実際には2つのイベントが発生していることがわかりました。「keypress」と「keydown」です。イベントの1つを無効にすると、コードは予期した動作を示しました。
$(document).unbind('keypress');
$(document).keydown(function(){
//my code
});
これはすべてのブラウザーで機能し、ブラウザー固有の(if($。browser.mozilla){})を確認する必要もありません。
これが誰かに役立つことを願っています
元のコードには$( 'document')...がありますが、引用符なしで$(document)が必要です。