jQuery - 当输入字段被聚焦时,带有回车键的目标按钮

use*_*794 23 html jquery

我有一个输入字段和一个登录按钮.我想允许用户点击"输入"键,在输入字段聚焦时单击按钮.我如何用jQuery做到这一点?

<input type="text" size="10" id="loginUserID" name="username">
<input type="button" value="Login" name="loginBtn" id="loginBtn">
Run Code Online (Sandbox Code Playgroud)

Ali*_*guy 45

$('#loginUserID').keypress(function(event){
  if(event.keyCode == 13){
    $('#loginBtn').click();
  }
});
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/Bhf5a/

  • 更通用的方法是$(this).keypress(function(event){...)。然后它捕获所有输入对象的Enter键。 (2认同)

mu *_*ort 7

你不需要jQuery,只需将按钮更改为type="submit":

<input type="text" size="10" id="loginUserID" name="username">
<input type="submit" value="Login" name="loginBtn" id="loginBtn">
Run Code Online (Sandbox Code Playgroud)

然后<form>当你点击Enter文本输入时,它将自动提交.

  • 如果他在按钮点击上有另一个听众而不是表单提交怎么办? (2认同)

nnn*_*nnn 7

如果它们处于相同的形式并且您将按钮更改为type="submit"应该发现它会自动发生,但无论如何......

$(document).ready(function() {

   $('#loginUserID').keypress(function(e){
      if(e.which === 13)
         $('#loginBtn').click();
   });

});
Run Code Online (Sandbox Code Playgroud)

(或者您可能更喜欢.keyup.keydown.)


小智 6

接受的答案以及大多数其他答案理所当然地认为 click() 操作可能会通过提交表单并切换到另一个页面来结束事件处理,或者表单上某处没有提交,因此他们忽略了停止事件链,但情况可能并非如此。

e.preventDefault()在调用click()目标按钮之前不要忘记调用。否则,除了单击之外,表单上的第一个按钮仍会在回车时触发!

$('#loginUserID').keypress(function(event) {
    if(event.keyCode == 13) {
        e.preventDefault(); // Stop the default behaviour
        $('#loginBtn').click();
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 虽然这不是问题的答案,但它给出了其他答案,并且表明它们都是错误的(在某种程度上)。如果您不放置 `e.preventDefault()`,您仍然会在模拟点击后获得在字段内点击 RETURN 的默认行为,这可能是一个问题。它应该是每个答案下面的评论,或者它可以引用其他答案并添加完整的代码,但它很有用且必要...... (3认同)