14

Enterユーザーがテキストボックスのキーを押しているときに、フォーカスをボタンに設定しようとしています。しかし、それは機能していません。InternetExplorer8ブラウザを使用しています。私は何かが足りないのですか?

$("input.Box").live('keydown', function(e) {
    if (e.keyCode == 13) {
        e.preventDefault(); 
        $("#button").focus(); // Not working?
    }
});
4

4 に答える 4

11

問題は、IEが十分に迅速に応答できないことです。そのため、live関数が開始されてから.focus()呼び出されるまでの間にわずかな遅延を追加する必要があります。だから、交換してください

$("#button").focus();

setTimeout(function () {
 $('#button').focus();
}, 100);

これは、 Blenderが提案したようにwithを使用することと組み合わせて、問題を修正するはずe.whichです。e.keyCode

于 2011-10-18T04:48:23.960 に答える
8

Microsoftは、彼らが好きではなくe.keyCode、代わりに独自の構文を持っていると判断しましe.whichた。

両方を確認する必要があります。

$("input.Box").live('keydown', function(e) {
    var keyCode = (window.event) ? e.which : e.keyCode;

    if (keyCode == 13)
        e.preventDefault(); 
        $("#button").focus(); // Not working?
    }
});
于 2011-10-18T04:45:56.600 に答える
1

名前が正しいですか?.NETには名前を変更する習慣があります。言語や環境を指定しません。

クラスセレクターを使用してみてください。ボタンにクラス名を付けてclass="Test"から、を使用して選択し$(".Text").focus()ます。

于 2011-10-18T04:44:49.127 に答える
0

フォーカスを設定する前に、DOMの準備ができており、要素が存在することを確認してください。

于 2013-07-19T16:34:45.183 に答える