HTML表单:Select-Option vs Datalist-Option

use*_*984 122 forms html5 html-select html-datalist

我想知道Select-Option和Datalist-Option之间的区别.是否存在使用其中一种更好的情况?每个例子如下:

选择 - 选项

<select name="browser">
<option value="firefox">Firefox</option>
<option value="ie">IE</option>
<option value="chrome">Chrome</option>
<option value="opera">Opera</option>
<option value="safari">Safari</option>
</select>
Run Code Online (Sandbox Code Playgroud)

数据列表,期权

<input type=text list=browsers>
<datalist id=browsers>
  <option value="Firefox">
  <option value="IE">
  <option value="Chrome">
  <option value="Opera">
  <option value="Safari">
</datalist>
Run Code Online (Sandbox Code Playgroud)

jam*_*iss 167

将其视为需求和建议之间的差异.对于select元素,用户需要选择您给出的选项之一.对于datalist元素,建议用户选择您给出的一个选项,但他实际上可以在输入中输入他想要的任何内容.

编辑1:您使用哪一个取决于您的要求.如果用户必须输入您的一个选项,请使用该select元素.如果使用可以输入任何内容,请使用该datalist元素.

编辑2:在HTML Living Standard中找到了这个小窍门:"每个选项元素是datalist元素的后代......代表一个建议."


mas*_*sta 60

从技术角度来看,它们完全不同.<datalist>是其他元素的选项的抽象容器.在你的情况下,你已经使用它,<input type="text"但你也可以使用范围,颜色,日期等.http://demo.agektmr.com/datalist/

如果将它与文本输入一起使用,作为一种自动完成,那么问题实际上是:使用自由格式文本输入或预定的选项列表是否更好?在那种情况下,我认为答案更明显一些.

如果我们专注于使用<datalist>文本字段的选项列表,那么这是一个选择框之间的一些具体差异:

  • 一个<datalist>美联储文本框有两个显示标签,并提交一个字符串.选择框可以具有与显示标签不同的提交值<option value='ie'>Internet Explorer</option>.
  • 一个<datalist>美联储文本框不支持<optgroup>标签来组织显示屏.
  • 你不能限制用户的选项列表中<datalist>像你可以用<select>.
  • 平变化事件的工作方式不同.在<select>元素上,onchange事件在更改时立即触发,而<input type="text"事件在元素失去焦点或用户按Enter后触发.
  • <datalist>在各种浏览器中都非常支持.显示所有可用选项的方式不一致,事情只会变得更糟.

在我看来,最后一点真的是最重要的一点.由于您将拥有更通用的自动完成回退,因此几乎没有理由遇到配置问题的麻烦<datalist>.此外,任何体面的自动完成插件都可以为您的选项显示设置样式,但<datalist>这样做并没有.如果您可以随意操作<datalist>可接受的<li>元素,那将非常棒!但不是.

另外,就我所知,<datalist>搜索是从字符串开头的完全匹配.所以,如果你有<option value="internet explorer">和你搜索'探险家'你将得不到任何结果.大多数自动完成插件都会搜索文本中的任何位置.

我只是<datalist>作为一个快速和懒惰的方便助手用于一些内部页面,我知道100%确定用户拥有最新的Chrome或Firefox,并且不会尝试提交虚假值.对于任何其他情况,<datalist>由于浏览器支持非常差,很难推荐使用.

  • 很好的答案!你能解释一下第二个子弹吗?“用于组织显示的选项组”是什么意思?谢谢。 (3认同)
  • 我已经在 Firefox 66 和 Chrome 73 下进行了测试 - 实际上,数据列表标签在任何地方都匹配,因此,例如,如果您的数据列表包含国家/地区名称,“ted”将匹配“美国”和“英国”。 (3认同)
  • 到 2023 年,情况会有所不同。现在运行的浏览器中有 95% 支持它。FireFox 目前仅支持文本,但他们也在转向支持全系列,而且 FireFox 并不像五年前那么普遍。Chrome 或 Safari 占据了超过 80% 的浏览器市场,而 Microsoft Edge 在企业中更为常见。所有这三个浏览器都不支持数据列表内更高级的搜索。搜索已显着改进,因此不需要外部插件。如果你做一些花招的话,SelectList 也可以放入 DataList 中。 (2认同)

use*_*654 10

Datalist 本身包括自动完成和建议,它还可以允许用户输入未在建议中定义的值。

Select 只为您提供用户必须从中选择的预定义选项