jQuery(document).ready(function() {
jQuery(".multipleDataRow").on("click", "[id^='multiremove_']", function() {
//code here to delete
});
});
我想避免在按下“enter”
按键时调用删除功能当我专注于其他文本框并按下输入按钮时,点击功能会触发。
删除按钮位于具有“multipleDataRow”类的容器内。
删除功能会在其他字段上按键输入时继续触发。
答案 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”添加到您的按钮元素中。