【问题标题】:button click event is triggered after keypress using jQuery使用 jQuery 按键后触发按钮单击事件
【发布时间】:2010-08-10 08:01:23
【问题描述】:

我有这些代码

$('#search-button').keypress(function (e) {
   if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {            
        search();
   };
});

$('#search-button').bind('click', function () {
   search();
});

在搜索模块下我有一个警报,现在每当我在按钮处于焦点时按 Enter 时,click 事件下的 search() 也会触发。请帮忙。谢谢。

【问题讨论】:

  • 它打了两次search() ?

标签: jquery click keypress


【解决方案1】:

按下回车键确实会触发 keypress 事件 - 但也会触发按钮的“点击”事件,因此您会调用两次搜索。

您不需要为回车键添加处理程序。

【讨论】:

    【解决方案2】:
        $(document).ready(function(e) {
    $('form').bind('keypress', function(event){
        if(event.keyCode == 13)
        {
        event.preventDefault();
        $("#submitcat").click();
        }
    });
    $("#submitcat").click(function(){
    alert("Ok");    
    });
    });
    

    【讨论】:

    • 只是转储一些(严重缩进)代码并不能回答问题。请编辑添加一个真实的答案,并请修复代码布局。
    【解决方案3】:

    为什么要把keypress 事件放在按钮上?按下 Enter 无论如何都会触发click 事件。您可能希望将 keypress 事件放在文本输入中或完全放弃它。

    【讨论】:

    • 我不得不这样做的一个原因是,无障碍标准要求仅使用键盘导航。对于 Chrome 和 Firefox,Enter 键注册为 click。但IE却没有
    【解决方案4】:
    $(document).on('keypress',function(e) {
        if (e.keyCode == 13 || e.which == 13) {
            var identifier = e.target.id;
            console.log(e.target.id);
            $('#' + identifier).click();
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2013-10-14
      • 1970-01-01
      • 2019-06-22
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      相关资源
      最近更新 更多