• jQuery 插件练习 多选下拉列表


    页面展示效果如下:

    插件代码如下: 

    ccombobox.js
    (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="'+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:{},
    		200,
    		panelHeight:80,
    		editable:false
    	};
    	
    })(jQuery);
    

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

    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:"前台录入"}
    ];
    

      页面展示代码如下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<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,
    					300,
    					panelHeight:100
    				});
    				$("#test2").ccombobox({
    					id : "exptype",
    					data:DATA.exptype,
    					300,
    					panelHeight:100
    				});
    			 
    			});
    		</script>
    		<title>test</title>
    
    	</head>
    	<body >
    		<div id="test"></div>
    		<div id="test2"></div>
    	</body>
    </html>
    

      

  • 相关阅读:
    SimpleRetryTemplateSupplier
    Atcoder Grand Contest 013 E Placing Squares(组合意义转化+矩阵快速幂/代数推导,思维题)
    Atcoder Grand Contest 033 D Complexity(dp)
    Vue案例之计数器
    Redis数据类型之List列表类型
    Redis数据类型之Hash哈希类型
    Vue之vfor列表展示
    Vue初体验
    RedisDesktopManager本地连接云服务器上的Redis
    Redis数据类型之ZSet有序集合类型
  • 原文地址:https://www.cnblogs.com/Eastsong/p/3600938.html
Copyright © 2020-2023  润新知