浏览器不一致:解决FORM提交差异问题

时间:2016-03-30 16:21:06

标签: html

https://jsfiddle.net/516amfmL/2/ - 点击表格输入,按ENTER

<form onsubmit="return false;">

  <button style="display: none !important;" onclick="alert('!! Should NOT see this !!');">Hidden Button</button>

  Click in input, press ENTER: <input type="text" />

  <p>
    <button onclick="alert('this is okay');">Visible button</button>
  </p>

</form>

运行上面的JS Fiddle,Chrome&amp; Firefox的工作方式相同,MS Edge&amp; Safari以不同的方式做事。我将此列为Chrome中的一个错误,很快就被告知他们遵循的HTML标准声明:

  

4.10.22.2隐式提交 - 表单元素的默认按钮是树形顺序中的第一个提交按钮,其表单所有者是该表单元素。

没有人想在标准中明确是否应该忽略隐藏元素。

无论如何,这不是我的问题。我的问题是解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

表单上的隐藏按钮仍处于活动状态,并且一直都是这样,但很自然地认为它会或者应该被自动忽略。

问题的一个可能解决方法是将第一个按钮更改为<input type="button"/>

<input type="button" style="display: none !important;" value="Hidden Button" onclick="alert('!! Should NOT see this !!');"/>

适用于Chrome和Edge。

这是您的fiddle updated