防止按下 Enter 键时多次调用 keypress 方法

Bar*_*ney 6 html javascript jquery input

我正在使用 HTML 输入标签制作一个简单的搜索栏:

<input type="text" id="search_bar" />
Run Code Online (Sandbox Code Playgroud)

然后在 jQuery 中,我实现了 keypress 方法来检测用户何时按下 Enter/Return 键:

$('#search_bar').keypress(function(e) {
    if(e.keyCode == 13 && !e.shiftKey) { // enter/return
        e.preventDefault();
        //do stuff
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,如果用户决定按住回车键,则该方法将被多次调用。我想禁用此行为,即keypress仅在用户按 Enter 键时调用一次,但在按住该键时不会再次调用。实现这一目标的最佳方法是什么?

谢谢。

tym*_*eJV 5

使用onkeyup()只会检测按键何时被释放。这应该可以解决您的持有输入问题。

$('#search_bar').keyup(function(e) {
    if(e.keyCode == 13 && !e.shiftKey) { // enter/return
        e.preventDefault();
        console.log("xx");
    }
});
Run Code Online (Sandbox Code Playgroud)

按住回车--xx仅在发布时记录。

小提琴: http: //jsfiddle.net/veRkd/


小智 2

尝试使用keydown或keyup。这可能会改变keycode价值。