easyui控件

1.easyui-datebox

截止到目前的版本(1.6.10),easyui并没有提供一种选择月份的时间控件,但是在项目中却会经常有此类需求。
下面提供一种解决办法,这种实现方式利用了easyui的onShowPanel、parser、formatter方法。

首先,写一个时间输入框:
<input class="easyui-datebox" id="monthSpan" style="width:150px;"data-options="editable:false">
然后,在javascript代码中,加入:

 
var p = $('#monthSpan').datebox('panel'),
	tds = false,
	span = p.find('span.calendar-text');
$('#monthSpan').datebox({    
	onShowPanel: function() {
		span.trigger('click');
		if (!tds)    
			setTimeout(function() {
				tds = p.find('div.calendar-menu-month-inner td');
               	tds.click(function(e) {    
                   	e.stopPropagation();
                	var year = /\d{4}/.exec(span.html())[0], month = parseInt($(this).attr('abbr'), 10) + 1;    
                   	$('#monthSpan').datebox('hidePanel').datebox('setValue', year + '-' + month);
               	});    
			}, 0);    
	},    
	parser: function(s) {
		if (!s)    
    		return new Date();    
    	var arr = s.split('-');    
    	return new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, 1);    
	},    
	formatter: function(d) {    
		var month = d.getMonth();  
		if(month<=10){  
			month = "0"+month;  
		}  
		if (d.getMonth() == 0) {    
			return d.getFullYear()-1 + '-' + 12;    
		} else {    
			return d.getFullYear() + '-' + month;    
		}    
	}
});   

最终的效果如下图所示:
example

2.easyui-datetimebox

下面修改控件默认的按钮事件:
先写html:
<input id="beginTime" class="easyui-datetimebox" editable=false />
再写js事件:

 
 setJinTianTime('#beginTime');
 
function setJinTianTime(dom){
	var today = function (){
	    //当前的时间
	    var dd = new Date();
	    var y = dd.getFullYear();  
	    var m = dd.getMonth()+1;  
	    var d = dd.getDate(); 
	    var str = y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d)+' 00:00:00'; 
	    return str; 
	};
	
	var buttons = $.extend([], $.fn.datetimebox.defaults.buttons);
	buttons.splice(0, 1, 
			{text: '今天', handler: function(target){
				var date = today();
				$(target).datetimebox('setValue', date).datetimebox('setText', date).datetimebox("hidePanel");
			}
	});
	$(dom).datetimebox({buttons: buttons});
}  

3.easyui combogrid

定义多列搜索事件,例子如下:

 
var startDevs = ...(先初始化数据);

$(dom).combogrid({
	panelWidth:300,
	idField: 'deviceCode',
	textField: 'deviceName',
	columns:[[
		{field:'deviceName',title:'设备名称',width:200},
		{field:'ip',title:'设备IP',width:120}
	]],
	onSelect: function(rowIndex, rowData){ },
	keyHandler: {
		up: function(e){},
		down: function(e){},
		left: function(e){},
		right: function(e){},
		enter: function(e){
			if(e.keyCode == 13) {
				var value = $(e.target).val();
				doSearch(value, startDevs, ["deviceName","ip"], $(this));
			}
		},
		query: function(q,e){}
	}
});
//加载静态数据
$(dom).combogrid("grid").datagrid('loadData', startDevs);  

//搜索名称和ip
function doSearch(q, data, searchList, ele){
	ele.combogrid('grid').datagrid('loadData', []);
	if(q == ""){
		ele.combogrid('grid').datagrid('loadData', data);
		return;
	}
	var rows = [];
	$.each(data, function(i, obj){
		for(var p in searchList){
			var v = obj[searchList[p]];
			if (!!v && v.toString().indexOf(q) >= 0){
				rows.push(obj);
				break;
			}
		}
	});
	ele.combogrid('grid').datagrid('loadData', rows);
	ele.combogrid('showPanel');
}


转载请注明: 不好听的博客 easyui控件

上一篇
初识python: 运行环境 初识python: 运行环境
此过程为windows7上的开发环境 安装anaconda(开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项) 用pip命令安装开发Web App需要的第三方库:异步框架aiohttp:pip i
2018-12-04
下一篇
easyui遮罩 easyui遮罩
easyui的页面加载问题在用easyui做页面的过程中,总是会出现页面加载慢,在显示一堆乱七八糟的没渲染的页面后,才显示正常。是否会有一种日了狗的感觉?!此时,我们可以在页面上加上遮罩,页面加载完成之后,再显示。只需要在页面中引入一个js
2018-11-23
目录