1. 与 的协作模式及自动补全下的边界
与 如何协作实现"可输入的选择框"?在动态选项更新、键盘操作与无障碍方面各有哪些边界?
- datalist 通过 list 属性与 input 关联,提供非强制性建议
- 与 select 强制选择语义的本质区别
- 动态更新选项的方式及键盘、无障碍边界
通过 input 的 list 属性关联,提供"建议"而非"约束",用户可自由输入任意值; 要求必须从预定义选项中选取,二者协作可形成"可输入的选择框"。动态更新时直接增删 datalist 内的 ,浏览器实时刷新建议。边界:datalist 无法自定义选项渲染,键盘交互依赖浏览器原生实现且各端差异大;其选项不进入 Tab 顺序,屏幕阅读器支持不统一,生产环境常需自定义下拉组件兜底并补充 role、aria-expanded 等属性。
本题考察对原生自动补全机制的理解:list 属性只是把 input 与 datalist 绑定,属于非强制性建议,与 select 的强制选择语义本质不同;同时需关注动态更新方式与键盘、无障碍边界,体现工程落地时对浏览器差异的认知。
<input list="city-list" name="city" placeholder="输入或选择城市">
<datalist id="city-list">
<option value="北京"></option>
<option value="上海"></option>
<option value="深圳"></option>
</datalist>