即使没有<form>标签</form>,IE也会在按钮上触发提交

时间:2013-09-28 08:00:11

标签: forms internet-explorer internet-explorer-9 internet-explorer-10 form-submit

我知道如果我们有<form><input>有或没有submit按钮,按下Enter键会提交该封闭表单。但是,即使没有<form>标签,IE也会提交(特别是点击它遇到的第一个按钮)。

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <button onclick="alert('button 1 clicked')">button 1</button>
    <button onclick="alert('button 2 clicked')">button 2</button>
    <input type="text" />
</body>
</html>

以上Plunkr中的标记。

Enter字段中按下“input”时,会看到 按钮1点击 '警报。

如果我使用<input>标记包围<form>,则表示不提交。

Plunkr

在IE9和IE 10中也观察到此行为(尚未测试其他版本)。这是IE中的错误,或者如果不是,如何阻止这种情况发生?

更新 :如果我添加type="button",则不会发现上述行为。 <button>代码的默认行为是submit吗?并且,只有IE表现得像这样吗?

2 个答案:

答案 0 :(得分:1)

如果我添加type="button",则不会观察到所述行为。提交标记的默认行为是什么?并且,只有IE表现得像这样吗?

This answer帮助我确定添加type="button"不会导致此效果

答案 1 :(得分:0)

您可以通过在 onclick 事件中添加'return false;'来阻止IE提交表单。这是代码:

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
   <button onclick="alert('button 1 clicked'); return false; ">button 1</button>
   <button onclick="alert('button 2 clicked'); return false; ">button 2</button>
   <input type="text" />
</body>
</html>

此外,您还可以通过添加'return false'来阻止“提交”按钮提交表单。