CheckBoxDropList,多选框下拉列表

还是代码存档,这个代码中无意中知道了 attr()和prop()的区别,哎,之前用的少没发现。。。

1.效果图                                                                                  

checkboxdownlist

2.css代码                                                                                

.dyw_checkboxdownlist
{
    position: absolute;
    display: none;
    z-index: 1000;
    margin-top: 5px;
    border: 1px solid black;
    background-color: White;
}

.dyw_checkboxdownlist table
{
    border-collapse: collapse;
}

.dyw_checkboxdownlist table td
{
    padding: 1px 0px 1px 2px;
}

.dyw_checkboxdownlist table tr:nth-child(even)
{
    background-color: #E5EFFE;
}

.dyw_checkboxdownlist div:nth-child(1)
{
    overflow-y: auto;
    overflow-x:hidden;
}

.dyw_checkboxdownlist input[type='button']:hover{
    cursor:pointer;
}

3.js代码                                                                                  

/*
*checkboxdownlist
*dyw  2015/1/28
*
使用 eg:
//配置控件
        var checkobj = {
            control: "selectmodule",
            data: ModuleData,
            container: { height: 200
            },
            button: {
                selall: "hide",
                clearall: "show"
            }
        };
        //创建对象
        var checkboxlist = new dyw_checkboxdownlist(checkobj);

        //初始化
        checkboxlist.Init();
        //获取选中数据
        checkboxlist.GetData();
*
*/

function dyw_checkboxdownlist(obj) {
    this.Init =
    /*
    *初始化 下拉框
    *obj
    *obj.control:附加到的控件的id
    *obj.data:数据
    *obj.container.height //后面继续拓展其他可设置属性
    *obj.button.selall: show / hide  选择全部按钮
    *obj.button.clearall: show / hide  清空全部按钮
    */
    function f_dyw_InitCheckBoxDownList() {
        //附加到的控件的ID
        var control = $('#' + obj.control).css("cursor", "pointer");
        //获取附加到的控件的离页面的 top 和left
        var off = control.offset();

        //div 容器
        var div = $('<div id="dyw_' + obj.control + 'checkbox_downlistdiv" class="dyw_checkboxdownlist"></div>').css({ "top": off.top + control.height(), "left": off.left, "height": obj.container.height,"width":control.width()});
        //添加到页面中
        $(document).find("body").append(div);
        //添加check容器 和 按钮容器
        div.append($('<div><table style="width:'+(control.width()-20)+'px"></table></div>').height(obj.container.height - 24)).append($('<div></div>'));

        //按钮
        var selall = $('<input class="dyw_cbdl_selall" type="button" value="全选" />').css({ "float": "right", "margin": "2px" });
        var clear = $('<input class="dyw_cbdl_clearall" type="button" value="清空" />').css({ "float": "right", "margin": "2px" });

        //控制按钮显示或者隐藏
        //选择全部按钮
        if (obj.button.selall == "hide") {
            selall.hide();
        }

        //选择清空全部按钮
        if (obj.button.clearall == "hide") {
            clear.hide();
        }
        //将按钮添加到div 容器中
        div.find("div:eq(1)").append(selall).append(clear);
        //根据传递进来的数据 添加checkbox
        $(obj.data).each(function (index, element) {
            div.find("div table").append('<tr><td><input type="checkbox" class="dyw_checkbox" value="' + element.ID + '" /><span style="width:' + (control.width() - 20) + 'px">' + element.Name + '</span></td></tr>');
        });
        //全选按钮单击
        selall.click(function () {
            control.val("");
            var check = div.find("div table").find(".dyw_checkbox");
            check.prop("checked", true);
            check.change();

        });
        //清空按钮单击
        clear.click(function () {
            var check = div.find("div table").find(".dyw_checkbox");
            check.prop("checked", false);
            check.change();
        });
        //checkbox 选择变化
        div.find("div table").find(".dyw_checkbox").change(function () {
            var changetext = $(this).parent().find("span").html();
            //区分是否录入还是取消悬着
            if ($(this).prop("checked")) {
                control.val(control.val() + changetext + ",");
            } else {
                control.val(control.val().replace(changetext + ",", ""));
            }
            //调用一下附加到的控件的改变事件,可以方便页面使用
            control.change();
        }).click(function () {
            $(this).prop("checked") == true ? $(this).prop("checked", false) : $(this).prop("checked", true);
            $(this).change();
        });

        //行单击,触发checkbox选中
        div.find("div table tr td").click(function () {
            $(this).find("input").prop("checked") == true ? $(this).find("input").prop("checked", false) : $(this).find("input").prop("checked", true);
            $(this).find("input").change();
        }).css("cursor", "pointer");

        //鼠标移出div,隐藏
        div.mouseout(function () {
            $(this).hide();
        }).mouseover(function () {
            $(this).show();
        });

        //控件单击弹出
        control.bind("click", function () {
            div.show();
        });
    };
    this.GetData =
    /*
    *id 附件控件的id
    *返回选中值  以逗号为分割
    */
    function f_dyw_GetCheckBoxDownListCheckData() {
        var returnstr = "";
        $("#dyw_" + obj.control + "checkbox_downlistdiv").find(".dyw_checkbox:checked").each(function (index, element) {
            returnstr += $(element).val() + ",";
        });
        return returnstr.substring(0, returnstr.length - 1);
    };
};

4.html代码                                                                              

<!DOCTYPE html>

<html>
<head>
    <title>测试checkboxdownlist</title>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <script src="../js/CheckBoxDownList.js"></script>
    <link href="../css/CheckBoxDownList.css" rel="stylesheet" type="text/css" />

    <script>
        $(function () {
            var obj = [
                { ID: 1, Name: "中国" },
                { ID: 2, Name: "美国" },
                { ID: 3, Name: "俄罗斯" },
                { ID: 4, Name: "日本" }
            ];
            var checkobj = {
                control: "checkboxdownlist",
                data: obj,
                container: {
                    height: 150
                },
                button: {
                    selall: "show",
                    clearall: "show"
                }
            };

            //创建对象
            checkboxlist = new dyw_checkboxdownlist(checkobj);
            //初始化
            checkboxlist.Init();
        })
    </script>
</head>
<body>
    <input type="text" id="checkboxdownlist" maxlength="100" />
</body>

</html>

转载于:https://www.cnblogs.com/DengYW/p/4359712.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值