【问题标题】:Custom Autocomplete with html5 datalist使用 html5 数据列表自定义自动完成
【发布时间】:2025-12-04 03:50:01
【问题描述】:

我正在使用 html datalist 来自动填充一些数据。我想要一种行为,它应该过滤除一个默认值之外的所有内容。下面是示例代码:

<input type="text" list="mylist"/>
<datalist id="mylist">
    <option value="San Jose"></option>
    <option value="San Francisco"></option>
    <option value="New York"></option>
    <option value="Chicago"></option>
    <option value="Boston"></option>
    <option value="Los Angeles"></option>
</datalist>

在上面的内容中,默认情况下,如果我输入 s,它将只显示 San Jose 和 San Francisco,当我输入 n 时,它只会显示 New York。

我的要求是,在任何情况下,无论输入什么,都应该始终显示 San Jose(默认情况下),然后过滤其余元素。

示例:键入 B,应显示 San Jose 和 Boston,因为 San Jose 是我的默认值,Boston 是输入框上的过滤值。

这可能吗?如果不是,有哪些替代方法可以达到相同的结果?

JSFiddle

如果需要,我可以使用 Javascript/Jquery。但是,我不能使用任何自动完成插件。

【问题讨论】:

    标签: javascript jquery html html-datalist


    【解决方案1】:

    如果不使用自定义插件,这是不可能的。 datalist 支持充其量仍然是平庸的,目前没有办法影响显示的选项。

    有一些浏览器实现差异甚至不会受到影响(Chrome 仅在选项开始时匹配,FireFox 也匹配其中任何其他位置的文本)。无法改变这一点,更不用说添加自定义方式来显示某些建议了。

    【讨论】: