使用jQuery,在按键后触发按钮点击事件

3

我有这些代码

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

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

在搜索模块下,我有一个警报。现在,每当我按Enter键时,如果按钮处于焦点状态,点击事件下的搜索()函数也会触发。请帮忙解决。谢谢。

1
它调用了两次 search() 函数吗? - Reigel Gallarde
4个回答

6

按下回车键会触发keypress事件,但也会触发按钮的“click”事件,所以搜索会被调用两次。

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


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

1
仅仅转储一些(缩进不良的)代码不能回答问题。请编辑以添加真正的答案,并修复代码布局。 - Sander Steffann

1
为什么要在按钮上放置 `keypress` 事件?在其上按下 `Enter` 键将触发 `click` 事件。你可能想要将 `keypress` 事件放在文本输入框上,或者干脆不使用它。

我必须这样做的原因之一,是因为辅助功能标准要求仅支持键盘导航。在Chrome和Firefox中,回车键注册为'click'。但是在IE中不是。 - yannicuLar

0
$(document).on('keypress',function(e) {
    if (e.keyCode == 13 || e.which == 13) {
        var identifier = e.target.id;
        console.log(e.target.id);
        $('#' + identifier).click();
    }
});

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