jQuery 插件练习 多选下拉列表

页面展示效果如下:

jQuery 插件练习   多选下拉列表

 

 

插件代码如下: 

1
ccombobox.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
(function($) {
    /*
    功能:实现一个下拉列表,此下拉列表中的数据可以多选
    可以设置 1)下拉列表的宽度,2)下拉表面板的高度
    3)显示的数据 数据格式如下
    [
    {value:"01",text:"立即生效"},
    {value:"02",text:"下月生效"},
    {value:"03",text:"前台录入"}
    ]
     
    */
    $.fn.ccombobox = function() {
        var method = arguments[0];
        if ($.fn.ccombobox.methods[method]) {
            method = $.fn.ccombobox.methods[method];
            arguments = Array.prototype.slice.call(arguments, 1);
        } else if (typeof method === "object" || !method) {
            method = $.fn.ccombobox.methods.init;
        } else {
            $.error("Method " + method + " does not exist!");
            return this;
        }
        return method.apply(this, arguments);
    };
     
    $.fn.ccombobox.methods = {
        init : function() {
            var ops = $.extend({}, $.fn.ccombobox.defaults, arguments[0] || {});
            return $(this).each(function() {
                var sel = $(‘<select id="‘+ ops.id +‘" style="width:‘+ops.width+‘px"></select>‘);
                var dat = ops.data;
                console.log(dat);
                var j=0;
                var v_sel_cont ="";
                for (j=0; j< dat.length; j++)
                {
                    v_sel_cont += ‘<input type="‘ + ops.type + ‘" value="‘ +dat[j].value +‘"><span>‘+dat[j].text +‘</span><br/>‘
                }
                 
                var sel_cont=$(‘<div id="‘ + ops.id+‘_cont"‘+‘>‘+
                                v_sel_cont +
                             ‘</div>‘);
                              
                $("body").append(sel_cont)
                $(this).append(sel);
                 
                $(‘#‘+ops.id).combo({
                        editable:ops.editable,
                        panelHeight:ops.panelHeight
                    });
                     
                $(‘#‘+ops.id + ‘_cont‘ ).appendTo( $(‘#‘+ops.id).combo(‘panel‘ ) );
             
             
                var sel_cont_input = $(‘#‘+ops.id + ‘_cont‘ + ‘ input‘);
                sel_cont_input.click(function(){
                    var objs = sel_cont_input;
                    console.log(objs);
                    var i ;
                    var t ="" ;
                    var v ="" ;
                    for(i=0; i<objs.length; i++)
                    {
                        var obj = objs[i];
                        console.log(obj);
                        if("checked" == $(obj).attr("checked") )
                        {
                            t += $(obj).next("span").text() + ",";
                            v += $(obj).val() +",";
                        }
                         
                    }
                    if("" != t)
                    {
                        t = t.substr(0, t.length-1);
                        v = v.substr(0, v.length-1);
                    }
                    console.log(t);
                    console.log(v);
                    $(‘#‘+ops.id).combo("setText",t).combo("setValue",v);
                    $(‘#‘+ops.id).combo(‘hidePanel‘);
                });
             
            });
        }
    };
     
    $.fn.ccombobox.defaults = {
        id : "",
        type: "checkbox",
        data:{},
        width:200,
        panelHeight:80,
        editable:false
    };
     
})(jQuery);

  下拉列表数据文件:data.js

1
2
3
4
5
6
7
8
9
10
11
12
13
var DATA = DATA || {};
 
DATA.efftype=[
    {value:"01",text:"立即生效"},
    {value:"02",text:"下月生效"},
    {value:"03",text:"前台录入"}
];
 
DATA.exptype=[
    {value:"01",text:"立即失效"},
    {value:"02",text:"月底失效"},
    {value:"03",text:"前台录入"}
];

  页面展示代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
        <link rel="stylesheet" type="text/css" href="js/easyui/themes/default/easyui.css"/>
        <link rel="stylesheet" type="text/css" href="js/easyui/themes/icon.css"/>
        <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
        <script type="text/javascript" src="js/easyui/jquery.easyui.min.js"></script>
        <script type="text/javascript" src="style/js/data.js"></script>
        <script type="text/javascript" src="style/js/plugin/ccombobox.js"></script>
        <script>
            $(function(){
                $("#test").ccombobox({
                    id : "efftype",
                    data:DATA.efftype,
                    width:300,
                    panelHeight:100
                });
                $("#test2").ccombobox({
                    id : "exptype",
                    data:DATA.exptype,
                    width:300,
                    panelHeight:100
                });
              
            });
        </script>
        <title>test</title>
 
    </head>
    <body >
        <div id="test"></div>
        <div id="test2"></div>
    </body>
</html>

  

jQuery 插件练习 多选下拉列表,布布扣,bubuko.com

jQuery 插件练习 多选下拉列表

上一篇:TroubleShoot:网站设置找不到术语管理


下一篇:html5和css3学习历程