用jQuery实现可输入多选下拉组合框实例代码

发布时间 - 2026-01-10 22:36:18    点击率:

  【写在前面的话】网站上很多用各种插件,比如依赖bootstrap的bootstrap-select插件等。虽然这些框架可以实现很多功能,但因为在实际项目中,可能只会用到其中的某个功能,若是一概引入,会导致整个js加载过于笨重。比如前面提到的bootstrap-select插件,在不压缩的情况下,达到300多k。因此,为了实现一个可填写的下拉框有点得不偿失。

  基于这种原因,于是私下用jquery写了一个比较简单的多选下拉可填写组合框。  

 container{
   margin: 20px auto;
   padding:0 15px;
   width: 50%; 
   height:300px;
   box-sizing: border-box;  
  }
  .text-container{
   display: inline-block;
   float:left;
   width: 15%;
   height: 32px;
   line-height: 32px;
   box-sizing: border-box;
  }
  .selectContainer{
   width: 70%;
   height:200px;
   float:left;
   position: relative;
   padding:0;
   margin:0;
   box-sizing: border-box;
  }
  .selectedContent{
   width:85%;
   height: 25px;
   float:left;   
  }
  .dropDown-toggle{
   width:14%;
   height:31px;
   line-height: 31px;
   text-align: center;
   border: 1px solid silver;
   border-left:none;
   float:left;
   padding:0;
   margin:0;
   box-sizing: border-box;
   cursor: pointer;
  }
  .dropDown-menu{
   margin:0;
   padding:0 15px 10px;
   width:100%;
   border:1px solid silver;
   border-top: none;
   box-sizing: border-box;
   list-style: none;
   position: absolute;
   top:31px;
   right:0;
  }
  .items{
   margin-top:8px;
   padding: 2px;
   cursor: pointer;
  }
  .items:hover{
   background: #ddd;
  }
  .isSelectedText{
   display: inline-block;
   width:90%;
  }
  .dsn{
   display: none;
  }
<div class="container">
 <span class="text-container">最爱的水果</span>
 <div class="multipleSelect selectContainer">
  <input type="text" class="selectedContent">
  <div class="dropDown-toggle">选择</div>
  <ul class="dropDown-menu dsn">
   <li class="items">
    <span class="isSelectedText">苹果</span>
    <span class="isSelected"><input type="checkbox"></span>
   </li>
   <li class="items">     
    <span class="isSelectedText">梨</span>
    <span class="isSelected"><input type="checkbox"></span>
   </li>
   <li class="items">
    <span class="isSelectedText">橘子</span>
    <span class="isSelected"><input type="checkbox"></span>
   </li>
   <li style="text-align: right">
    <button type="button" class="confirmSelect">确定</button>
   </li>
  </ul>
 </div>
</div>
$('.isSelected input[type=checkbox]').on('click', function(){
   var selectedItems = $(this).parents('.dropDown-menu').prevAll('.selectedContent').val().split(' ');
   var thisItem = $(this).parent().prev().text();
   var isExisted = 0;
   var isChecked = $(this).is(':checked');
   if(isChecked){
    selectedItems.map(function(item, index){
     if(item === thisItem){
      isExisted++
     }
    });
    if(!isExisted){
     selectedItems.push(thisItem)
    }
   }
   else{
    selectedItems.map(function(item, index){
     if(item === thisItem){
      selectedItems.splice(index, 1);
     }
    });
   }
   $(this).parents('.dropDown-menu').prevAll('.selectedContent').val(selectedItems.join(' '));
  })
  $('.confirmSelect').on('click', function(){
   $(this).parents('.dropDown-menu').addClass('dsn');
  })
  $('.dropDown-toggle').on('click', function(){
   $(this).next().toggleClass('dsn')
  });

  由于本组件中使用了数组的map方法,可能此方法在ie中不能兼容。由于鄙人电脑ie无法打开,用360浏览器测试后同样可是正常使用。


# jquery可输入多选下拉组合框  # jquery  # 下拉组合框  # jQuery实现下拉框多选 jquery-multiselect 的实例代码  # 基于jQuery下拉选择框插件支持单选多选功能代码  # jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)  # 自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框  # 一个简单的jquery的多选下拉框(自写)  # 利用Jquery实现可多选的下拉框  # Jquery多选下拉列表插件jquery multiselect功能介绍及使用  # jquery multiSelect 多选下拉框  # jQuery EasyUI API 中文文档 - ComboBox组合框  # 只会  # 得不偿失  # 写了  # 正常使用  # 可以实现  # 多选  # 无法打开  # 上很  # 情况下  # 加载  # 使用了  # 下拉框  # 写在前面  # 在实际  # border  # sizing  # text  # block  # inline  # display 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel distinct去重查询_Laravel Eloquent去重方法  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  Laravel集合Collection怎么用_Laravel集合常用函数详解  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  html5的keygen标签为什么废弃_替代方案说明【解答】  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  bootstrap日历插件datetimepicker使用方法  Laravel如何处理异常和错误?(Handler示例)  googleplay官方入口在哪里_Google Play官方商店快速入口指南  长沙企业网站制作哪家好,长沙水业集团官方网站?  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何快速搭建FTP站点实现文件共享?  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  如何用西部建站助手快速创建专业网站?  公司网站制作价格怎么算,公司办个官网需要多少钱?  C++时间戳转换成日期时间的步骤和示例代码  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  动图在线制作网站有哪些,滑动动图图集怎么做?  Laravel如何集成Inertia.js与Vue/React?(安装配置)  如何在服务器上配置二级域名建站?  昵图网官网入口 昵图网素材平台官方入口  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  实现点击下箭头变上箭头来回切换的两种方法【推荐】  JavaScript如何实现错误处理_try...catch如何捕获异常?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  JavaScript数据类型有哪些_如何准确判断一个变量的类型  phpredis提高消息队列的实时性方法(推荐)  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  微信小程序 scroll-view组件实现列表页实例代码  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  轻松掌握MySQL函数中的last_insert_id()  Laravel如何生成API文档?(Swagger/OpenAPI教程)  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  无锡营销型网站制作公司,无锡网选车牌流程?  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  Laravel如何优化应用性能?(缓存和优化命令)  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  中山网站推广排名,中山信息港登录入口?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  如何做网站制作流程,*游戏网站怎么搭建?  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  零服务器AI建站解决方案:快速部署与云端平台低成本实践  魔方云NAT建站如何实现端口转发?  iOS验证手机号的正则表达式  网站建设要注意的标准 促进网站用户好感度!