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


发布者 ourjs  发布时间 1503025849015
关键字 编程技巧  Html5 
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




回复 (3)
  • #
  • #1 素材火 1506003244860
  • #2 QQ692950235 1511247545607

    需要做一款彩票类APP马甲包上架到安卓苹果市场 我们需要做安卓ios彩票类型APP套壳上架,我们的需求 logo、应用名称、标题、介绍图、关键词、描述需要用我的。对接极光推送消息功能(注苹果上架成功的APP必须兼容ios7.0版本或者8.0上架成功的APP必须显示我们指定网址内容)提供开发者账号,量大 联系方式:372630243

  • #3 张岂平 1547693107516

    123

微信扫码 立即评论