Select是HTML中的下拉列表标签,支持单选和多选,但是不支持手动输入,以下是一些解决方案。
datalist
Datalist是HTML5的原生标签,用于向input提供下拉和自动提示选项,支持输入和下拉选择两种方式。但是目前IE10及其以下浏览器并不支持, 并且IE11无法触发input和change事件,相当于IE系列均无法很好地实现。如果仅支持Chrome或Eletron桌面的应用则可以放心使用。
好处不需要引用额外的JS/CSS文件支持,示例:
<input list="cookies" placeholder="Type of Cookie"/> <datalist id="cookies"> <option value="Chocolate Chip"/> <option value="Peanut Butter"/> <option value="Raisin Oatmeal"/> </datalist>
在线示例 http://jsfiddle.net/joshpauljohnson/Uv5Wk/
Html+CSS兼容IE实现
有时侯,我们是必须要兼容旧版IE的。而且很多时侯,我们并不需要datalist的自动补全功能,我们可能更希望即使下拉选择中没有匹配用户输入的内容,所有选项也能够弹出来。这样通过纯HTML+CSS即可实现,基本原理是使用 input/select 两个元素,然后 input 覆盖在 select 上层 ,宽度并比select窄一点,这样用户就能点到select的箭头弹出下拉框。参考: Stackoverflow
<div class="select-editable"> <select onchange="this.nextElementSibling.value=this.value"> <option value=""></option> <option value="115x175 mm">115x175 mm</option> <option value="120x160 mm">120x160 mm</option> <option value="120x287 mm">120x287 mm</option> </select> <input type="text" name="format" value="" /> </div>
.select-editable { position:relative; background-color:white; border:solid grey 1px; width:120px; height:18px; } .select-editable select { position:absolute; top:0px; left:0px; font-size:14px; border:none; width:120px; margin:0; } .select-editable input { position:absolute; top:0px; left:0px; width:100px; padding:1px; font-size:12px; border:none; } .select-editable select:focus, .select-editable input:focus { outline:none; }
在线示例: http://jsfiddle.net/nwH8A/
JavaScript-autoComplete
这是一个由JavaScript编写的自动补全插件,不依赖jQuery且仅有5.4kB
项目地址:https://github.com/Pixabay/JavaScript-autoComplete
Bootstrap Magicsuggest
Magicsuggest是一个非常流行的自动补全插件,复用了Bootstrap的CSS样式,基于Bootstrap框架的可以考虑
https://github.com/nicolasbize/magicsuggest
本文暂时没有评论,来添加一个吧(●'◡'●)