如果有多个未命名的输入,为什么没有提交表单?

时间:2011-12-11 05:42:54

标签: html forms

<form method="POST" action="">
    <input type="text" />
    <input type="text" />
</form>

JSFiddle

input上的Enter键。然后删除其中一个input并再按一次。当我们在表单内部有两个输入时,表单未提交(我们需要一个按钮)。那是为什么?

3 个答案:

答案 0 :(得分:7)

单个输入的HTML表单的默认行为是在输入时提交。添加第二个输入后,按Enter键将不再提交表单。名称的存在或缺乏与它无关。

答案 1 :(得分:3)

最初的想法是非常简单的形式,通常仅由文本输入框组成,例如用于搜索,应该简单快捷:用户只需键入搜索词并点击Enter即可。其他类型的控件(例如复选框)不会影响这一点。几乎所有的浏览器都实现了这个想法。

但是,根据旧观点,如果有几个文本输入框,那么过早提交表单的风险太大:用户点击Enter,期望进入下一个字段,或者可能只是偶然。

然而,IE(在IE 4中)引入了使文本输入框中的Enter提交表单的功能,即使表单包含多个这样的元素。后来,其他浏览器也纷纷效仿,现在这种(错误?)行为似乎是“标准的”。这个功能被认为是一种可用性改进,在某些特殊情况下,确实如此。更常见的是,这是一种风险,因此页面通常会尝试使用客户端脚本来阻止它。

但是,至少在大多数现代浏览器中,只有在表单有提交按钮时才会发生这种情况。但如果省略提交按钮,用户将会感到困惑,因为大多数表单都有提交按钮或按钮。

答案 2 :(得分:0)

除非您在表单中的某处放置按钮或输入[type = submit]。该按钮可以包含在可见性:隐藏的CSS中,如果您不希望它出现。