• 下拉复选框


    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>下拉多选</title>
        <script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
        <style>
            ul li{
                list-style: none;
            }
            .hide{display: none}
            .width150{
                 150px;
            }
            .width150 input[type="text"]{
                 100%;
                height: 32px;
                border: 1px solid #ccc;
                border-radius: 4px;
                padding-left: 12px;
            }
            .width150 ul{
                 96%;
                padding: 0 0 0 20px;
                margin: 0;
                border: 1px solid #ccc;
            }
            .width150 li{
                padding: 5px;
            }
            .width150 li+li{
                border-top: 1px solid #ccc;
            }
        </style>
    </head>
    <body>
    <form id="form">
        <div class="width150">
            可多选年份:<input type="text" id="yearInput" placeholder="请选择年份" readonly>
            <ul id="yearId" class="hide">
            </ul>
        </div>
    </form>
    <script>
        (function(){
            var str = '';
            var arr = {
                0 : {name:'2015',id:0},
                1 : {name:'2016',id:0},
                2 : {name:'2017',id:0}
            };
            for (let x in arr){
                console.info(x);
                str += `<li><label><input type="checkbox" value="${arr[x].id}" data-name="${arr[x].name}">${arr[x].name}</label></li>`;
            }
            $('#yearId').html(str);
        })();
    
        $("#yearInput").click(function(){
            $(this).attr('placeholder','');
            var name = '';
            $('#yearId input').each(function () {//循环遍历checkbox
                var  check=$(this).is(':checked');//判断是否选中
                if(check){
                    name += $(this).attr('data-name')+',';
                    $(this).attr('name',"yearId");
                }else {
                    $(this).attr('name',"");
                }
            });
            $("#yearInput").val(name.slice(0,-1));//去除最后的逗号
        });
    
        $("#yearId").mouseover(function() {
            if (!$("#yearId").hasClass('hover')){//类hover在下面用来验证是否需要隐藏下拉,没有其他用途。
                $("#yearId").addClass('hover');
            }
        }).mouseout(function(){
            $("#yearId").removeClass('hover');
        });
    
        $(document).on('click',function() {
            if (!$("#yearInput").is(":focus") && !$("#yearId").hasClass('hover')) {//如果没有选中输入框且下拉不在hover状态。
                var name = '';
                $('#yearId input').each(function () {//遍历checkbox
                    var check = $(this).is(':checked');//判断是否选中
                    if (check) {
                        name += $(this).attr('data-name') + ',';
                        $(this).attr('name', "yearId");
                    } else {
                        $(this).attr('name', "");
                    }
                });
                $("#yearInput").val(name.slice(0, -1));//去除最后的逗号
                $("#yearId").addClass('hide');
            } else {
                $("#yearId").removeClass('hide');
            }
        });
    </script>
    </body>
    </html>
    

      

  • 相关阅读:
    利用模板方法模式导出Excel文件
    利用模板方法模式实现导出CSV文件功能
    抽象类多实现,省略this关键字调用实现类方法
    Spring工具类
    DateUtils工具类
    Java获取时间戳
    springMVC接受类型为Map,ajax请求参数类型为字符串将导致的请求400错误
    Set转逗号分隔字符串
    html标签中自定义属性
    编译安装MySQL
  • 原文地址:https://www.cnblogs.com/qianjin888/p/11160543.html
Copyright © 2020-2023  润新知