编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

让Select选择框可编辑可输入可自动补全可下拉选择

wxchong 2024-08-25 16:44:13 开源技术 9 ℃ 0 评论

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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表