そのため、Tabキーが押された場合にスクリプトを実行するのに苦労しています。少しグーグルで調べた後、Tabの文字コードは9です。また、話しているときに、文字コードを使用せずにキーが押されたかどうかを確認するより良い方法はありますか? charcodeを使用するときにfirebugで次の警告が表示され続けるため、私は尋ねています:
キーアップイベントの「charCode」プロパティは使用しないでください。値は無意味です。
とにかく、それはまだ機能するので、それは問題ではありません。これは私が使用するコードです:
$('/* my inputs */').keyup(function(e) {
console.log('keyup called');
var code = e.keyCode || e.which;
if (code == '9') {
console.log('Tab pressed');
}
});
上記のコードを使用すると、コンソールは空白のままになり、何も追加されません(Firebugを使用)。もちろん、テキストを記録するのではなく、実際にやってみましたが、何も実行されません。だから誰もこれが機能しない理由を見ることができますか?キーが押されたかどうかを確認するより良い方法はありますか?
前もって感謝します。
私の考えでは、タブキーを押すと、キーアップが発生する前にフォームの入力がフォーカスを失います。次のように、本体へのバインディングを変更してみてください。
$('body').keyup(function(e) {
console.log('keyup called');
var code = e.keyCode || e.which;
if (code == '9') {
alert('Tab pressed');
}
});
次に、それが機能する場合(それは私のために行います)、代わりにkeyDownにバインドを変更してみて、falseを返します。そうすれば、独自のカスタム動作を実装できます。
$('.yourSelector').keydown(function(e) {
console.log('keyup called');
var code = e.keyCode || e.which;
if (code == '9') {
alert('Tab pressed');
return false;
}
});
これらの2つのうちの1つは動作するはずです...それが本体の場合、キーダウンハンドラーを本体にアタッチし、それがタブの場合、フォーカスのあるフィールドを見つけます(関数.hasFocus()があると思いますか?)、それがあなたのものである場合必要な場合、続行してfalseを返します。それ以外の場合は、ブラウザに処理をさせます。
タブ文字でフィールドを更新したい場合は、コールバックでこれを試してください:
var theVal = $(this).val();
theVal = theVal + ' ';
$(this).val(theVal);
テストしていませんが、動作するはずです。また、問題が発生する場合は、タブ文字の代わりに3つまたは4つのスペースを追加することもできます。
e = e || window.event;
if(e.keyCode == 9)
alert("Tab pressed");
これを試して