表单无法使用Chrome或Firefox中的Enter键提交

时间:2014-04-05 21:12:43

标签: html forms

我对此感到愚蠢,但按Enter键时提交表单并不是正常的网页浏览器行为吗?这可能有什么问题?我已经检查过,通过js禁用测试,它不是任何javascript干扰。它在IE中工作。我希望将提交按钮设为<button>而不是<input>,但我认为输入会有更好的工作机会。

<form role="search" method="get" class="search-form form-inline" action="http://local.sos/">
   <div class="input-group">
     <span class="input-group-btn">
       <button class="btn" disabled=""><i class="icon-search"></i></button>
     </span>
     <input type="search" value="" name="s" class="search-field form-control" placeholder="Search">
     <span class="input-group-btn">
       <input type="submit" class="search-submit btn"><i class="icon-arrowright"></i>    </input>
     </span>   
   </div>
</form>

3 个答案:

答案 0 :(得分:6)

您依赖于非显而易见的行为,即在表单上的文本字段中按“输入”会自动提交表单,但前提是表单中只有一个文本字段。我遇到了类似的问题,只是没有尝试使用disabled属性......

显然这是HTML 2.0 specification

的一部分
  

如果表单中只有一个单行文本输入字段,则用户代理应接受该字段中的Enter作为提交表单的请求。

An old, but apparently still valid, and interesting, further discussion here

  

...显然是一种提交简单查询的便捷方式,但是在复杂的形式上降低了在尝试填写时过早提交的风险。许多浏览器实现者(例如Netscape,Opera,各种版本的Lynx,......)遵循了这个建议,虽然看起来略有不同。

但是,如果不只是单个文本字段,您可能需要某种提交按钮,即使您不希望在表单上看到它并使用CSS来隐藏它 - ({{ 1}} - 它应该仍然可以工作。(当然这完全取决于浏览器决定如何实现,但它似乎是我能说的标准。)

我做了a JSFiddle to demonstrate。据我所知(懒惰只是用Chrome测试),如果只有一个文本字段,或者如果有提交按钮,表单将在“Enter”上提交,即使它是隐藏的。

display: none, etc)

另见 Form not submitting when pressing enter

答案 1 :(得分:0)

它似乎是&#34;禁用&#34;的问题。在Chrome和Firefox中,按钮/提交类型输入字段具有&#34;禁用&#34;在形式下&lt;元素不允许通过按下提交表单&#34;输入&#34;密钥但在IE中它允许提交表单。

以下所有浏览器验证的代码:

<form action="http://google.co.in">
    <input type="text" name="s" />
    <input type="submit" disabled=""/>
</form>

答案 2 :(得分:0)

如果没有type='button'属性,它将用作提交,因此您在html中有两个提交按钮。如果按Enter键,它将使用第一个提交,如果禁用,则无法使用。 因此,您可以将type='button'添加到。