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()as.live()已被弃用

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

在 keyDown 中执行e.preventDefault()以避免按钮的默认操作:

$('#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 回答