前端组件:支持多选,支持选项筛选的下拉框选择器(基于Jquery和Bootstrap)

news/2024/7/5 19:55:32

效果图一:多选

效果图二:选项筛选

最后奉献源码,复制出来直接可用

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>支持搜索选项和多选的下拉框</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    </head>
    <style>
        .dropdown-menu {
            overflow-x: visible;
            overflow-y: auto;
            max-height: 300px;
        }
    </style>
    <body>
        <ul class="nav navbar-nav" >
            <li class="dropdown" >
                <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
                    <b>位置:</b>&nbsp
                    <label id="selectPosition">选择</label><span class="caret"></span>
                </a>
                <ul id="select_item" class="dropdown-menu" >
                    
                </ul>
            </li>
        </ul>
    </body>
    <script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
    <script type="text/javascript" src="http://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
    <script>
        //设置搜索选项功能
        var all_content = ['上面','aaa','cvb','dgf','gdf','dffh','erte','fdg','fghfg','erte','sdfs','gftjhgj']//选项
        var select_item_obj = $("#select_item")//下拉框对象
        select_item_obj.empty()
        select_item_obj.append('<input id="input_search" class="select_search" type="text"  class="input-sm" placeholder="搜索">')
        for (let j = 0; j < all_content.length; j++) {
            select_item_obj.append("<li class='select_item'><a href='#'>" + all_content[j] + "&nbsp&nbsp<span class='glyphicon glyphicon-ok hidden' ></span></a></li>")
        }
        var input_search_obj = $("#input_search")//搜索框对象
        //设置下拉框筛选事件
        input_search_obj.on("propertychange input ", function () {
            let search_msg = $(this).val()
            select_item_obj.children('.select_item').each(function () {
                $(this).remove()
            })
            if (search_msg != '') {
                let select_content = []
                for (let j = 0; j < all_content.length; j++) {
                    if (all_content[j].toLowerCase().indexOf(search_msg.toLowerCase()) >= 0) {
                        select_content.push(all_content[j])
                    }
                }
                console.log(select_content)
                for (let j = 0; j < select_content.length; j++) {
                    select_item_obj.append("<li class='select_item'><a href='#'>" + select_content[j] + "&nbsp&nbsp<span class='glyphicon glyphicon-ok hidden' ></span></a></li>")
                }
            } else {
                for (let j = 0; j < all_content.length; j++) {
                    select_item_obj.append("<li class='select_item'><a href='#'>" + all_content[j] + "&nbsp&nbsp<span class='glyphicon glyphicon-ok hidden' ></span></a></li>")
                }
            }
            //将下拉框的值设置为显示的值,由于下拉框处于动态变化,所以必须放在变化最后的位置,才能保证全部的下拉框绑定事件
            $('ul.dropdown-menu li.select_item').on('click', function (e) {
                var ul_obj = $(this).parent()
                var glyphicon_obj = $(this).children('a').children('span')
                var glyphicon_class = glyphicon_obj.attr('class')
                if (glyphicon_class == 'glyphicon glyphicon-ok') {
                    glyphicon_obj.attr('class', 'glyphicon glyphicon-ok hidden')
                } else {
                    glyphicon_obj.attr('class', 'glyphicon glyphicon-ok')
                }
                var label_val = ''
                ul_obj.find('li').each(function () {
                    var select_falg = $(this).children('a').children('span')
                    var now_obj = $(this)
                    if (select_falg.attr('class') == 'glyphicon glyphicon-ok') {
                        label_val += $.trim(now_obj.text()) + ','
                    }
                })
                console.log(label_val)
                if (label_val == '') {
                    label_val = '选择'
                }
                $(this).parent().prev().children('label').text($.trim(label_val))
                $(this).parent().prev().children('label').val($.trim(label_val))                
                e.stopPropagation();
            })
        })
        //将下拉框的值设置为显示的值,由于下拉框处于动态变化,所以必须放在变化最后的位置,才能保证全部的下拉框绑定事件
        $('ul.dropdown-menu li.select_item').on('click', function (e) {
            var ul_obj = $(this).parent()
            var glyphicon_obj =  $(this).children('a').children('span')
            var glyphicon_class = glyphicon_obj.attr('class')
            if(glyphicon_class=='glyphicon glyphicon-ok'){
                glyphicon_obj.attr('class','glyphicon glyphicon-ok hidden')

            }else{
                glyphicon_obj.attr('class','glyphicon glyphicon-ok')
            }
            var label_val = ''
            ul_obj.find('li').each(function () {
                var select_falg = $(this).children('a').children('span')
                var now_obj = $(this)
                if(select_falg.attr('class')=='glyphicon glyphicon-ok'){
                    label_val += $.trim(now_obj.text())+','
                }
            })
            console.log(label_val)
            if(label_val==''){label_val='选择'}
            $(this).parent().prev().children('label').text($.trim(label_val))
            $(this).parent().prev().children('label').val($.trim(label_val))
            e.stopPropagation();
        })
        //阻断li的点击事件
        $(".select_search").on('click', function (e) {
            e.stopPropagation();
        });
    </script>
</html>

 

转载于:https://www.cnblogs.com/lelexiu/p/10239309.html


http://www.niftyadmin.cn/n/4556520.html

相关文章

这种题目怎么做 为什么 谢谢 给个例题 正方形的周长C与它的边长中的2个变量是否成正比例

因为&#xff1a;周长 4 * 边长 对于这个例子 周长c和边长 成 正比例 这种题目的做法是找出两个变量之间的函数关系的表达式 根据函数的表达式 符合正比例函数&#xff1a;y k * x (k4&#xff09;的定义 就可以知道两个变量的确切关系了 周长和边长着两个变量之间的函数干洗…

关于C语言方面的问题 请高手指教

||| main(){int a[10] 而不是你所想要的f指向A数组 你这样赋值会让f指向的值为A[10] 钱能主编的书里有. ||| float *f;*f A[10]; //Error:*f表示f的首地址的值 B[7]) ; return 0 ;} ||| 二.C语言/C类问题描述.这些问题在<<C程序设计教程>>清华大学出版社 40) ; pr…

支付宝服务商开发

支付宝服务商开发&#xff0c;相对微信服务商来讲还是有点坑的&#xff0c;可能太久没接触支付宝支付了吧&#xff0c;作为系统服务商首先要解决几个问题。 1.关于服务商的返佣&#xff0c;虽然子商户在服务商下面进件产生&#xff0c;如果不加上额外的参数的话&#xff0c;服务…

C.K眞的死了嗎

C.K之死  地点&#xff1a;医院   过程&#xff1a;拔掉输液管.   死因&#xff1a;自杀   c.k 在最后绝望的时候 最初资料就是2月13日自杀 有人说她是性爱高潮注射毒品   自杀未成功   但在第二天早上9点左右被阿姨发现   还注射了冰  用匕首在大腿和手腕处不…

gulp4配置多页面项目编译打包

又开始公司的新项目了。。。 那当我们拿到公司新项目的时候我们需要做些什么呢&#xff1f; 下面就来分享一下我的工作步骤吧&#xff08;仅使用于初学者&#xff0c;大神勿见怪- -&#xff0c;有不好的地方希望指出&#xff0c;十分感谢&#xff09; 1. 整版浏览 这是一个废话…

在word2010中添加带滚动条的文本框

由于文件内容过长&#xff0c;为了加强文章的可读性&#xff0c;可以添加一个带滚动条的文本框&#xff0c;既能使文章看起来干净整洁&#xff0c;同时也极大的提高了文章的可读性。 我这里对在word2010中文本框带滚动条作个介绍&#xff1a; 1. 打开word后&#xff0c;点击“…

要中文的~ 新手用的c语言编程有哪些软件

searchVC%2B%2B&suffix&restype-1&id2您去看下 VC6.0中文版吧 这里很多资源 cidE4A5AE49E62291D5518F4C52905E8279BB9B1D37&t2&fmt-新手建议使用TC2.0 VS高版本的比较复杂不建议使用 答案补充 http://search.gougou.com/search cid7497C46991962334EBE62CD…