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

时间:2012-07-05 21:54:55

标签: javascript browser

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

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

韩国社交协会

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

2 个答案:

答案 0 :(得分:0)

使用:

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

答案 1 :(得分:0)

<强>解决!

如果我无法停止提交按钮上的点击事件,我只能在用户点击之间解决浏览器差异问题。要将browsers clickusers click分开,我将使用 mousedown 事件而不是点击事件。

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

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

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

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