<button type =“submit”> IE和Chrome中的行为不同:为什么?

时间:2017-02-14 05:20:42

标签: javascript html forms google-chrome internet-explorer-11

表单在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()”。

有谁可以给​​我理由?

1 个答案:

答案 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,不那么聪明:}