数据列表用于建议值,但不强制值

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 提供适用于您旅程各个阶段的云产品。 立即开始使用 200 美元的免费积分!

您是否曾经遇到过需要接受一小段任意文本的表单? 比如名字或其他。 这正是 <input type="text"> 的用途。 有 许多不同的输入类型(以及 模式!),选择合适的类型是一个好主意。

但这个小故事是关于其他事情,并且适用于任何类型。

如果文本需要是任意的(例如“您最喜欢的颜色是什么?”),这样人们可以输入任何东西,但您还想提供帮助。 也许有一些非常流行的答案。 如果人们可以简单地选择一个,岂不是很好? 不是 <select>,而是输入和下拉菜单的混合体。 不过等等。 不要急着创建自己的自定义 React 元素。

这就是 <datalist> 的作用。 我前几天刚成功使用过它,所以我想写篇博文来记录一下,因为写博客很酷。

以下是基本知识

查看 CodePen 上 Chris Coyier (@chriscoyier) 的笔
基本数据列表用法

CodePen 上。

我正在处理的用例需要

  1. 一个用于用户名 <input type="text">
  2. 一个用于“标志”(表示权限的任意字符串) <input type="text">

我可能不会为数据库中的每个用户名都使用 <datalist>。 我认为没有限制,但它位于您的 HTML 中,所以我建议最多 100 个选项或更少。

但对于第二个,我们当时可能只有 3-4 个独特的标志,所以对这些标志使用数据列表非常合理。 您可以输入任何您想要的内容,但这 UI 帮助您选择最常见的选项。 太方便了。 也许这对于像性别输入这样的东西很有用,您可以在其中选择一个选项列表,但它不会强制您实际选择其中一个选项。

即使比 <datalist> 存在的事实更不为人知的是:它适用于除了 text 之外的所有类型的输入,比如 daterange,甚至 color