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

 更新时间:2017年01月18日 08:48:24   作者:前端狗狗狗狗狗  
这篇文章主要介绍了用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浏览器测试后同样可是正常使用。

相关文章

  • jquery中用函数来设置css样式

    jquery中用函数来设置css样式

    本文主要对jquery中用函数来设置css样式的方法进行详细介绍,具有很好的参考价值,下面就跟小编一起来看下吧
    2016-12-12
  • Jquery动态列功能完整实例

    Jquery动态列功能完整实例

    这篇文章主要介绍了Jquery动态列功能,结合完整实例形式详细分析了jQuery基于事件响应及页面元素动态属性操作实现的动态列显示功能相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • jQuery实现的点击按钮改变样式功能示例

    jQuery实现的点击按钮改变样式功能示例

    这篇文章主要介绍了jQuery实现的点击按钮改变样式功能,涉及jQuery基于事件响应的页面元素样式动态操作相关实现技巧,需要的朋友可以参考下
    2018-07-07
  • jquery手风琴特效插件

    jquery手风琴特效插件

    这篇文章主要介绍了jquery手风琴特效插件,效果非常棒,需要的朋友可以参考下
    2015-02-02
  • jquery 实现复选框的全选操作实例代码

    jquery 实现复选框的全选操作实例代码

    这篇文章主要介绍了jquery 实现复选框的全选操作实例代码的相关资料,需要的朋友可以参考下
    2017-01-01
  • EasyUI 数据表格datagrid列自适应内容宽度的实现

    EasyUI 数据表格datagrid列自适应内容宽度的实现

    这篇文章主要介绍了EasyUI 数据表格datagrid列自适应内容宽度的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 三分钟带你玩转jQuery.noConflict()

    三分钟带你玩转jQuery.noConflict()

    这篇文章主要介绍了三分钟带你玩转jQuery.noConflict() 的相关资料,需要的朋友可以参考下
    2016-02-02
  • jQuery应用之jQuery链用法实例

    jQuery应用之jQuery链用法实例

    这篇文章主要介绍了jQuery应用之jQuery链用法,实例形式分析了jQuery链的原理及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • jQuery图片切换动画效果

    jQuery图片切换动画效果

    这篇文章主要介绍了jQuery图片切换动画效果,处理动画延迟,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • jquery实现跳到底部,回到顶部效果的简单实例(类似锚)

    jquery实现跳到底部,回到顶部效果的简单实例(类似锚)

    下面小编就为大家带来一篇jquery实现跳到底部,回到顶部效果的简单实例(类似锚)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07

最新评论