为什么浏览器触发点击事件而不是提交表单?
问题描述:
我有这样的代码 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));
});
尝试在输入文本回车,看看控制台:
keydown
jQuery(input)
click
jQuery(input submit)
问题:为什么浏览器在提交按钮上触发'click'事件,而不是触发表单中的'submit'事件?这是项目缺陷还是规范?我怎样才能取消第二个事件没有取消表单提交?
韩国社交协会
UPDATE 换句话说,我只需要从浏览器事件diferenciate我的事件。
答
解决了!
如果我无法停止提交按钮上的点击事件,我可以workarround只有diferenciating浏览器从用户点击。若要diferenciate browsers click
从users click
我将使用mousedown事件而不是点击事件。
每当我们在输入文本中点击RETURN时,浏览器触发器会以当前的形式单击第一个提交按钮。但是这并不会触发这种事件,在这种情况下是“人类专用”。
固定版本,打印一次事件。
jQuery('input').bind("keydown mousedown", function(event){
console.log(event.type);
console.log(jQuery(this));
});
答
使用:
jQuery('input').bind("keydown click", function(event){
event.preventDefault();
console.log(event.type);
console.log(jQuery(this));
});
可能重复:http://*.com/questions/4763638/enter-triggers-button-click – 2012-07-05 22:02:21