0

我有这个代码 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)

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

Tks

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

4

2 回答 2

0

利用:

jQuery('input').bind("keydown click", function(event){
    event.preventDefault();
    console.log(event.type);
    console.log(jQuery(this));
});
于 2012-07-05T22:12:00.133 回答
0

解决了!

如果我无法停止提交按钮上的点击事件,我可以仅将浏览器与用户点击区分开来。区别于我将使用mousedown事件而不是browsers clickclick事件users click

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

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

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

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

于 2012-07-06T13:43:05.077 回答