按键“输入”时触发jquery“on click”功能

时间:2013-10-09 13:41:55

标签: jquery

jQuery(document).ready(function() {
    jQuery(".multipleDataRow").on("click", "[id^='multiremove_']", function() { 
        //code here to delete
    });
});

我想避免在按下“enter”

按键时调用删除功能

当我专注于其他文本框并按下输入按钮时,点击功能会触发。

删除按钮位于具有“multipleDataRow”类的容器内。

删除功能会在其他字段上按键输入时继续触发。

4 个答案:

答案 0 :(得分:6)

按下 Enter 键,同时专注于某个按钮,其处理方式与浏览器的click事件相同。

正如Rory所提到的,这是所有浏览器设计的一个功能,如果您希望否定此功能,最终用户可能对最终结果不满意,因为它不具备所有标准功能。

要取消此操作,您可以检查onkeydown / onkeyup / onkeypress以检查点击事件触发前是否发生键盘操作,并停止点击事件代码触发一把钥匙被按下了。

var isKeyPress = false;

document.onkeydown = function(event) {
   if (event.keyCode == 13) {
      isKeyPress = true;
   }
}

jQuery(".multipleDataRow").on("click", "[id^='multiremove_']", function() { 
   if (!isKeyPress) {
      //code here to delete
   }
   isKeyPress = false;
});

如果isKeyPress值为true

,则应停止运行点击事件代码

答案 1 :(得分:4)

这是所有浏览器的设计。它是一个辅助功能,因此不应被篡改。

如果它导致您网站出现意外行为,请更改HTML标记以解决此问题。

答案 2 :(得分:1)

你可以简单地在你的html代码中编写代码,就像你的html标签一样

onkeydown="return (event.keyCode!=13);"

这将阻止浏览器点击事件。

答案 3 :(得分:0)

很多人似乎都错过了这一部分:

  

当我专注于其他文本框并按Enter键时,将触发单击功能。

当输入和和按钮为形式时,这只是标准的浏览器行为。在您提供的摘录之外,您可能会遇到这种情况,但是对我来说绝对是这种情况。

我只是将<form>标记更改为div,因为无论如何逻辑都是通过jQuery处理的。但是this answer也有一个有用的块:

  

... <button>元素的默认类型为"submit".,这意味着,如果您在包含该按钮的<form>中的任意位置按Enter,它将自动提交。

     

TLDR:将type =“ button”添加到您的按钮元素中。