我正在尝试使用此代码阻止页面上的提交事件,这样如果我按Enter键,它将单击validate
元素。
$(document).ready(function(){
$("form").submit(function(event){
event.preventDefault();
document.getElementById("validate").click();//alert("Something") works fine here
});
});
但是,当我按下输入时,将焦点保持在任何文本字段上,它会提交表单并将操作分配给表单。它不会阻止谷歌浏览器47中预期的Submit
事件。如果我要放置任何alert
而不是document.getElementById("validate").click();
然后它工作正常。这是该页面的HTML代码
<td align="center" width="100%">
<input type="button" value=" Next " id="validate" tabindex="4">
<a id="Proceed" href="#" onclick="mojarra.jsfcljs(document.getElementById('form'),{'Form:Proceed':'Form:Proceed'},'');return false"></a>
<input id="replan" type="submit" name="replan" value="Replan" tabindex="4">
</td>
那么,任何人都可以解释为什么这不适用于较新版本的Chrome?(它在chrome 39中工作正常)
注意:标识validate
的事件是使用addEventListener()
分配的。
答案 0 :(得分:0)
我在类似情况下略有不同,我抓住文本框上的keydown并执行preventDefault以防止提交表单。
$(document).ready(function(){
$("input[type='text']").keydown(function(evtObj){
var code = (e.keyCode ? e.keyCode : e.which);
if (code==13) {
e.preventDefault();
}
});
});
请参阅有关密钥陷阱jQuery - keydown / keypress /keyup ENTERKEY detection?
的讨论