43

Enterキーを取得して、特定のテキストボックス内で押されたときに関数をトリガーしようとしていますが、最初のボタンまたはデフォルトのボタンはトリガーされません。

ここで起こっていることの例を見ることができます:http://jsfiddle.net/cutsomeat/WZ6TM/1/

他のキーを押すと、キーコードが記載されたアラートボックスが表示されますが、Enterキーを押すと、キーコードが記載されたアラートボックスは表示されず、ボタンクリックイベント内のアラートボックスが表示されます。

明らかに、Enterキーはボタンをトリガーします。これを回避し、代わりに、keyupイベントでEnterキーをキャプチャしてから、別の関数をトリガーする方法はありますか?

4

4 に答える 4

94

これを試して:

$('#myText').on("keypress", function(e) {
        if (e.keyCode == 13) {
            alert("Enter pressed");
            return false; // prevent the button click from happening
        }
});

デモ

于 2012-06-12T17:32:26.383 に答える
50

非推奨になっているように使用.on()します。.live()

$(document).on("keypress", ".myText", function(e) {
     if (e.which == 13) {
         //do some stuff
     }
});
于 2013-05-28T07:28:33.900 に答える
21

e.preventDefault()ボタンのデフォルトのアクションを回避するには、keyDownで実行します。

$('#myText').keydown(function(e) {
    if (e.keyCode == 13) {
        e.preventDefault();
    }
    alert(e.keyCode);
});
于 2012-06-12T17:41:24.670 に答える
12
$(document).ready(function() {

    $('#myText').keypress(function(e) {
        if ( e.keyCode == 13 ) {  // detect the enter key
            $('#myButton').click(); // fire a sample click,  you can do anything
        }
    });

    $('#myButton').click(function(e) {
        alert('Button click activated!');
    });

});

デモ

ライブ要素の場合は.on()、次のように使用します。

$(document).ready(function() {

    $(document).on('keypress', '#myText', function(e) {

        if ( e.keyCode == 13 ) {  // detect the enter key
            $('#myButton').click(); // fire a sample click,  you can do anything
        }
    });

    $(document).on('click', '#myButton', function(e) {
        alert('Button click activated!');
    });

});
于 2012-06-12T17:38:50.520 に答える