当SELECT重点提交表单时为什么不进入?

Mar*_*ber 26 html forms submit form-submit

请考虑以下HTML:

<form action="">
    <input />
    <select>
        <option>A</option>
        <option>B</option>
    </select>
    <input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

如果焦点在input(文本框)上并且我按Enter键,则表单提交.

但是,如果焦点在select(下拉框)并且我按下回车,则没有任何反应.

我知道我可以找出一些JavaScript来覆盖它,但我想知道为什么命中输入不仅仅起作用?

有没有什么东西我会通过使用JavaScript捕获输入(可能是下拉列表的本机键盘可访问性)?

Cho*_*ula 21

这只是控制的本质.Enter键(或鼠标单击)是进行选择的原因.按Enter键提交表单会导致用户体验不佳,因为表单基本上不可用.

我不建议通过JavaScript更改行为,因为默认行为是常态,也是每个人都期望的.

(想象一下,如果您在下拉列表中进行选择时提交的每个表单都会是什么样的.例如,考虑在Amazon.com上搜索.一个选择一个类别然后输入搜索词.如果通过按下选择一个类别输入,表单将在输入搜索词之前提交.)

  • 这取决于您使用的浏览器.例如,回车键不会在Firefox中提交表单,但会在Google Chrome上提交. (4认同)
  • 你不太对劲 - 无论如何,你可能正在发帖.现在转到亚马逊,您可以选择一个类别,然后按Enter键进行搜索,而不与任何其他表单元素进行交互. (2认同)
  • 我不会-1 这个答案,但我不认为它回答了这个问题,我也不同意用户不改变它的任何建议。首先 - 回答“就是这样”不是答案:)。其次,场景、用户和用途太多,你不能简单地说它会混淆你的用户。 (2认同)
  • 当 SELECT 的组合已打开时,可以使用 ENTER 选择突出显示的项目,但应再次按 ENTER 提交。 (2认同)

Sty*_*dev 11

选择标签非常有趣.Enter键唯一能做的就是一旦你点击下拉列表打开并使用箭头键选择一个选项,你可以按Enter键关闭下拉菜单.

令我难以置信的是W3规格.没有说明输入键应该做什么,每个浏览器都以同样的方式做!浏览器程序员可以完成以下任一操作.

当关注一个关闭的下拉列表时输入会选择:

  1. 打开下拉列表,这样您就可以在查看所有选项的同时键入它.

  2. 会提交表格.

然而每个人都决定不改变它...更令人惊奇的是,我已经设计了13年的网站,直到今天我才注意到这一点,当我从业务分析师那里得到错误修复时说他们不能在他们点击进入时提交表格!让我想起了Tiny Pony.

http://www.w3.org/TR/html401/interact/forms.html