jQuery按下回车键调用函数

15

我在按钮点击时调用一个函数,代码如下:

<input type="button" value="Search" id="go" />

$("#go").click(function ()
{
...
});

现在我通过这个函数捕获用户是否按下键盘上的Enter键:

现在我可以使用以下函数检测用户是否按下键盘上的Enter键:

$("#s").keypress(function(e) {
    if(e.which == 13) {
        alert('You pressed enter!');
    }
});

但我该如何称呼呢?

$("#go").click(function ()
    {
    ...
    });

用户是通过按下回车键还是点击GO按钮来执行操作的?

5个回答

30

显式触发点击处理程序:

$("#s").keypress(function(e) {
    if(e.which == 13) {
        alert('You pressed enter!');
    $("#go").click();
    }
});

可能需要修改:e.which === 13 - slightlynybbled
1
为什么?e.which始终是一个数字,因此类型转换不是问题。我不介意一直使用=== - Barmar

3
你可以使用 keyup 事件:
$("#s").keyup(function(e) {
    if (e.which == 13) {
        $("#go").click();
    }
});

3
尝试这个:
     $("#s").keypress(function(e) {

         if(e.which == 13) {
             e.preventDefault();
             $("#go").click();
          }
    });

Fiddle Demo


0
   $(document).on("keyup", "#s", function (e) {

      if (e.which == 13) // the enter key ascii code
        {
         alert('You pressed enter!');

         $(document).on("click", "#go", function (e) {
             alert('button clicked!');
          }
        }
        
  });

请在您的答案中添加解释。 - Sfili_81
通过使用jQuery,您可以轻松地进行事件同步。在这里,按钮单击等待按下回车键后才会调用。 - abhi akbari

0

同时使用点击事件和鼠标事件:我担心你没有提到文本框,所以我假设你在按钮上都使用了这两种事件。

$("#go").keypress(function(e) {

  //Event.which == 1 mouse click left and event. which == 13 is enter key.
   if(e.which == 13 || e.which == 1 ) {
      alert('You pressed enter or clicked left mouse');
   }

});


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接