当前位置:首页 > 日记 > 正文

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

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

  【写在前面的话】网站上很多用各种插件,比如依赖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浏览器测试后同样可是正常使用。

相关文章

excel表格的锁定方法

excel表格的锁定方法

方法,锁定,表格,电脑软件,excel,  Excel中如何锁定表格呢?接下来是小编为大家带来的excel表格的锁定方法,供大家参考。excel表格的锁定方法:  锁定表格步骤1:用MSOffice 2003打开一个文档,选中需要设置锁定的内容,弹出单元格设置对话框,勾选…

基于vue-cli创建的项目的目录结构

基于vue-cli创建的项目的目录结构

目录结构,项目,电脑软件,vue,cli,一、├── build // 项目构建(webpack)相关代码 记忆:(够贱) 9个│ ├── build.js // 生产环境构建代码│ ├── check-versions.js // 检查node&npm等版本│ ├── dev-client.js // 热加载相关│ ├─…

怎么在ppt中绘制七色彩虹条形图

怎么在ppt中绘制七色彩虹条形图

绘制,条形图,彩虹,电脑软件,ppt,  PPT课件是应用最广泛的多媒体教学资源,它能够有效的将文字、图形、音频、视频、动画等多种元素融合在一起;那么怎么在ppt中绘制七色彩虹条形图呢?下面小编来告诉你吧。在ppt中绘制七色彩虹条形图的方法:…

word怎么取消自动编号格式word取消

word怎么取消自动编号格式word取消

自动编号,取消,方法,步骤,格式,  想必有很多人在编辑word文档的时候,有时候会使用到编号或者项目符号,但是却发现很多段落都会自动加上了编号,可是有时我们并不希望这样,那么下面就由小编给大家分享下word取消自动编号格式的技巧,希望能帮助到…

excel表格里面如何插入圆形

excel表格里面如何插入圆形

方法,圆圈,表格,电脑软件,excel,  Excel是当今社会最流行用的办公软件之一,Excel可以用于数据的整理、分析、对比。可以更直观的看到数据的变化情况,而有很多时候需要在数据表中画圆圈,那么大家知道怎样画圆呢?接下来小编举例简单的例子告诉…

powerpoint怎样设置打印预览

powerpoint怎样设置打印预览

设置,方法,文件,电脑软件,powerpoint,  怎样打印ppt文件,一份好的PPT不仅可以吸引观众的眼球同时还可以反映自己的制作能力,但是如果前期的工作做好了,不懂设置打印怎么办?下面小编马上就告诉大家ppt设置文件打印的方法吧,希望小编整理的资料…

jquery中关于bind | 方法的使用技

jquery中关于bind | 方法的使用技

分享,方法,使用技巧,电脑软件,jquery,.bind()方法可使用.on()方法来代替on()方法提高代码易读性,如下$("input").bind("click", { foo: "hello" }, handler);$("input").on("click", { foo: "hello" }, handler);bind()绑定事件…

js控制一个按钮是否可点击 | 可使

js控制一个按钮是否可点击 | 可使

控制,实例,按钮,电脑软件,js,实例如下:/*** * 设置按钮是否可点击 */function abledDownloadBtn(flag) {var $exportChartBtn = $("#exportChartBtn");flag ? $exportChartBtn.removeAttr("disabled") : $exportChartBtn.attr("disable…

JavaScript和jQuery制作光棒效果

JavaScript和jQuery制作光棒效果

效果,电脑软件,JavaScript,jQuery,使用javaScript与jQuery添加CSS样式的区别和步骤使用javaScript制作光棒效果--首先是javaScript<script> $(function () { var lis = document.getElementsByTagName("li"); //定义DOM变量接受…

JavaScript中数组的各种操作的总结

JavaScript中数组的各种操作的总结

操作,数组,必看,电脑软件,篇数,js数组的新建,头插入,尾插入,头删除,尾删除,中间删除,删除多个,多个数组合并,数组倒序,数组截取等等,都有对应的例子。声明一个数组原来是如下声明:var s = new Array();但是 现在编辑器推荐使用如下声明:简洁var s = [];…

js鼠标移动时禁止选中文字

js鼠标移动时禁止选中文字

文字,鼠标移动,电脑软件,js,这是通过CSS样式来实现的禁止用鼠标选择功能:unselectable为IE准备onselectstart为Chrome、Safari准备-moz-user-select是FF的css style:html,body{-moz-user-select: none; -khtml-user-select: none; user-sele…

JS模拟超市简易收银台小程序代码解

JS模拟超市简易收银台小程序代码解

程序代码,模拟,收银台,简易,超市,废话不多说了,直接给大家贴代码了,具体代码如下所示:<script type="text/javascript"> // 1.编写一个程序,计算增加后的工资。要求基本工资大于等于1000元,增加20%的工资;若小于1000元且大于等于800元,则增加15…