表单在IE中提交两次(Internet Explorer版本:11.713.10586.0),但在Chrome中只提交一次。
<div id="pageButtons">
<button type="submit" onClick="sendAction('submit')"> Submit </button>
</div>
sendAction函数就像:
function sendAction(anAction){
document.form._action.value = anAction ;
document.form.submit();
}
因为按钮类型是提交的,并且在函数sendAction中我正在通过代码提交,因此表单同时提交了两次。
所以我将按钮HTML部分更改为:
<div id="pageButtons">
<button type="button" onClick="sendAction('submit')"> Submit </button>
</div>
然后它在IE中运行良好。现在我无法理解的是,如果type =“submit”事件导致IE中的表单提交两次,为什么它在Chrome中运行良好。在Chrome中也应该提交两次,因为按钮类型是提交的,我也有硬编码“document.form.submit()”。
有谁可以给我理由?
答案 0 :(得分:0)
您的按钮在sendAction()
函数执行后继续执行,从而导致双重表单提交(一次作为sendAction()
函数的一部分,一次作为普通HTML <form>
{{的一部分1}}行为。
尝试在您的函数中添加<button type="submit">
:
return false
在onClick中添加function sendAction(anAction){
document.form._action.value = anAction ;
document.form.submit();
return false;
}
:
return
这将允许<button type="button" onClick="return sendAction('submit');"> Submit </button>
触发表单提交,然后sendAction()
返回return false
,这将阻止onClick()
正常行为。
Chrome足够智能,可以更好地了解Sagar V指出的情况。 IE,不那么聪明:}