为什么浏览器会触发点击事件而不是表单提交

why browser trigger a click event instead of a submit in a form?

本文关键字:事件 表单提交 浏览器 为什么      更新时间:2023-09-26

>我有这个代码http://jsfiddle.net/2Gay9/3/

.HTML

<form action="/" method="get" onsubmit="return false";>
    test: <input type="text" value="">
    <input type="submit" value="submit">
</form>

.JS

jQuery('input').bind("keydown click", function(event){
    console.log(event.type);
    console.log(jQuery(this));
});

尝试在输入文本中按 RETURN 并查看控制台:

keydown
jQuery(input)
click
jQuery(input submit)

问题:为什么浏览器在提交按钮上触发"点击"事件,而不是在表单中触发"提交"事件?这是项目缺陷还是规范?如何在不取消表单提交的情况下取消第二个活动?

更新换句话说,我只需要将我的事件与浏览器事件区分开来。

使用:

jQuery('input').bind("keydown click", function(event){
    event.preventDefault();
    console.log(event.type);
    console.log(jQuery(this));
});

解决了!

如果我无法停止提交按钮上的单击事件,我只能将浏览器与用户单击区分开来。为了区分browsers click users click我将使用鼠标按下事件而不是单击事件。

每次我们在输入文本中点击 RETURN 时,浏览器触发器都会单击当前表单中的第一个提交按钮。但这不会触发鼠标关闭事件,在这种情况下是"人类独有的"。

固定版本,即打印事件一次。

jQuery('input').bind("keydown mousedown", function(event){
    console.log(event.type);
    console.log(jQuery(this));
});

http://jsfiddle.net/2Gay9/6/