JavaScript如何让select选择框可输入和可下拉选择

 更新时间:2023年10月31日 08:38:17   作者:Sun Peng  
我们知道一般select下拉框是只能选择的,而有时我们会遇到下拉框中没有要选择的信息项或者下拉选项特别多时,需要允许用户输入想要的内容,这篇文章主要给大家介绍了关于JavaScript如何让select选择框可输入和可下拉选择的相关资料,需要的朋友可以参考下

【1】Html+CSS兼容IE实现

基本原理:使用 input/select 两个元素,然后 input 覆盖在 select 上层 ,宽度并比select窄一点,这样用户就能点到select的箭头弹出下拉框

<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;
 }

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .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;
    }
  </style>

  <script src="./jquery.min.js"></script>
</head>

<body>
  <div class="select-editable">
    <select onchange="this.nextElementSibling.value=this.value" id="cookies">
      <!-- <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>

  <script>
    window.onload = function () {
      var optionList = [
        { value: '1' },
        { value: '2' },
        { value: '3' },
        { value: '4' },
        { value: '5' },
      ]
      $('#cookies').empty()
      if (optionList && optionList.length > 0) {
        for (var i = 0; i < optionList.length; i++) {
          $('#cookies').append(`<option value="` + optionList[i].value + `">`+optionList[i].value+`</option>`);
        }
      }
    }
  </script>
</body>

</html>

【2】datalist

Datalist是HTML5的原生标签,用于向input提供下拉和自动提示选项,支持输入和下拉选择两种方式。但是目前IE10及其以下浏览器并不支持, 并且IE11无法触发input和change事件,相当于IE系列均无法很好地实现。如果仅支持Chrome或Eletron桌面的应用则可以放心使用。

<input list="cookies" placeholder="Type of Cookie"/>

<datalist id="cookies">
    <option value="Chocolate Chip"/>
    <option value="Peanut Butter"/>
    <option value="Raisin Oatmeal"/>
</datalist>

<body>
  <div>
    <input list="cookies" placeholder="请选择或输入" />
    <datalist id="cookies">
      <!-- <option value="Chocolate Chip" />
      <option value="Peanut Butter" />
      <option value="Raisin Oatmeal" /> -->
    </datalist>
  </div>

  <script>
    window.onload = function () {
      var optionList = [
        { value: '1' },
        { value: '2' },
        { value: '3' },
        { value: '4' },
        { value: '5' },
      ]
      $('#cookies').empty()
      if (optionList && optionList.length > 0) {
        for (var i = 0; i < optionList.length; i++) {
          $('#cookies').append(`<option value="` + optionList[i].value + `" />`);
        }
      }
    }
  </script>
</body>

</html>

总结 

到此这篇关于JavaScript如何让select选择框可输入和可下拉选择的文章就介绍到这了,更多相关js select选择框可输入可下拉选择内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解微信小程序自定义组件的实现及数据交互

    详解微信小程序自定义组件的实现及数据交互

    这篇文章主要介绍了微信小程序自定义组件的实现及数据交互,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • Three.js利用顶点绘制立方体的方法详解

    Three.js利用顶点绘制立方体的方法详解

    最近在学习three.js,将学习中遇到的知识点总结分享出来,下面这篇文章主要给大家介绍了关于Three.js利用顶点绘制立方体的方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • JavaScript常用数组去重实战源码

    JavaScript常用数组去重实战源码

    本文给大家分享js常用8种数组去重实战源码,针对每种方法通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2021-07-07
  • JS FormData上传文件的设置方法

    JS FormData上传文件的设置方法

    使用FormData上传文件时,总是获取不到req.file对象。发现是没有配置对FormData导致的,怎么解决这个问题呢?下面小编给大家带来了JS FormData上传文件的设置方法,需要的朋友参考下吧
    2017-07-07
  • 深入浅出ES6之let和const命令

    深入浅出ES6之let和const命令

    这篇文章主要介绍了ES6中let和const命令的相关资料,非常不错,具有参考借鉴价值,对es6 let const相关知识感兴趣的朋友一起看下吧
    2016-08-08
  • javascript 图片轮换 函数化继承

    javascript 图片轮换 函数化继承

    一直让我困扰的是,我不知道如何去让这个效果 自动播放,或者费了很多周折。这可能叫初始化。
    2010-05-05
  • 详解JS去重及字符串奇数位小写转大写

    详解JS去重及字符串奇数位小写转大写

    本篇文章主要介绍了详解JS去重及字符串奇数位小写转大写 ,非常具有实用价值,需要的朋友可以参考下。
    2016-12-12
  • javascript事件循环event loop的简单模型解释与应用分析

    javascript事件循环event loop的简单模型解释与应用分析

    这篇文章主要介绍了javascript事件循环event loop的简单模型解释与应用,结合实例形式分析了javascript事件循环event loop的与模型原理及使用技巧,需要的朋友可以参考下
    2020-03-03
  • JavaScript设计模型Iterator实例解析

    JavaScript设计模型Iterator实例解析

    这篇文章主要介绍了JavaScript设计模型Iterator实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 前端实现文件的断点续传(前端文件提交+后端PHP文件接收)

    前端实现文件的断点续传(前端文件提交+后端PHP文件接收)

    本文通过断点续传的简单例子(前端文件提交+后端PHP文件接收),本文以图片为实例给大家介绍的非常详细,具有一定的参考借鉴价值,感兴趣的朋友一起看看吧
    2016-11-11

最新评论