easyui使用总结(二)

1.easyui datagrid跨行跨列表头,如下图所示


可以通过html方式和js方式定义,以下给出js方式。

$(document).ready(function() {
	$('#dg').datagrid({
		fit : true, // 完全填充,继承自父类pannel的属性
		nowrap : false, // 是否只显示一行,即文本过多是否省略部分
		striped : true, // 间隔条纹
		singleSelect : true, // 只能单选
		rownumbers : true, // 行号
		scrollbarSize : 0, // 去掉右侧滚动条列
		pagination : false, // 包含分页
		pageSize : 20, // 分页值
		showHeader : true,
		pageList : [ 20 ],// 可以设置每页记录条数的列表
		toolbar : '#tb',
		columns : [
			// 第一行
			[{field:'endNum',title:'已放款档案总笔数',width:110,align:'center',rowspan:2},//跨两行
			{title:'其中:',colspan:4},//跨四列
			{field:'dealingNum',title:'未放款档案总笔数',width:110,align:'center',rowspan:2},
			{title:'其中:',colspan:4},//跨四列
			{field:'loanAmountTotal_end',title:'已放款总金额(万)',width:110,align:'center',rowspan:2}],
			// 第二行第一部分
			[{field:'endNum1',title:'个人一手房',align:'center',rowspan:1},
			{field:'endNum2',title:'个人二手房',align:'center',rowspan:1},
			{field:'endNum3',title:'个人消费',align:'center',rowspan:1},
			{field:'endNum4',title:'个人经营',align:'center',rowspan : 1},
			// 第二行第二部分
			{field:'endNum1',title:'个人一手房',align:'center',rowspan:1},
			{field:'endNum2',title:'个人二手房',align:'center',rowspan:1},
			{field:'endNum3',title:'个人消费',align:'center',rowspan:1},
			{field:'endNum4',title:'个人经营',align:'center',rowspan : 1}]
		],
		url : './count/loadBranchFilesCount.do'
	});
});

2.可改写保存的datagrid

var submitUrl;
function submit() {
	$('#fm').form('submit', {
		url : submitUrl,
		onSubmit : function() {
			var isValid = $(this).form('validate');
			if (!isValid) {
				alert("无法提交数据,请按要求录入要素");
			} else {
				// 校验通过, 提交关闭,防止多次提交
				$('#submitBtn').linkbutton('disable');
			}
			return isValid; // 返回false终止表单提交
		},
		success : function(data) {
			$('#dlg').dialog('close');
			var jsObject = eval('(' + data + ')');//easyUI,将json转js object
			//alert(JSON.stringify(data));
			//alert("data.success:" + data.success);
			if (jsObject.success) {				
				alert("提交成功");
				// 重新加载datagrid
				$('#dg').datagrid('reload');
			} else {
				alert("提交失败,出错原因: " + jsObject.msg);
			}
		}
	});
}

/**
 * 获得rowIndex
 * @param target
 * @returns
 */
function getRowIndex(target){
	// 使用jquery选择器选择到row index
	var tr = $(target).closest('tr.datagrid-row');
	return parseInt(tr.attr('datagrid-row-index'));
}

/**
 * 将选中的行,启用编辑
 * @param target
 */
function editrow(target){
	$('#dg').datagrid('beginEdit', getRowIndex(target));
}

/**
 * 保存编辑
 * @param target
 */
//因为没有选择行,所以无法在onEndEdit使用getSelected获得行
//需要在此处保存记录
function saverow(target){
	var rowIndex = getRowIndex(target);
	$('#dg').datagrid('endEdit', rowIndex);
	
	var dataGridRows = $('#dg').datagrid('getRows');
	var selectRow = dataGridRows[rowIndex];	
	var updateUrl = './para/updateFileDistPara.do?roleId=' + selectRow.roleId + "&flag=" + selectRow.flag;
    $.getJSON(updateUrl, function(json) {
    	// 打印json
    	//console.log(JSON.stringify(json.res));
    	//alert(JSON.stringify(json));
		if (json.success) {
			// 从右下角slide弹窗
			$.messager.show({
				title : '提示',
				msg : '保存成功',
				timeout : 1500,
				showType : 'slide'
			});
		} else {
			$.messager.alert("提示", "保存失败,出错原因:" + json.msg);
		}
    });
	
}

/**
 * 取消编辑
 * @param target
 */
function cancelrow(target){
	$('#dg').datagrid('cancelEdit', getRowIndex(target));
}

$(document).ready(function() {	
	$('#dg').datagrid({
		fit : true,			// 完全填充,继承自父类pannel的属性		
		nowrap : false,			// 是否只显示一行,即文本过多是否省略部分
		striped : true,			// 间隔条纹
		singleSelect: true,		// 只能单选
		rownumbers : true,		// 行号
		scrollbarSize : 0,		// 去掉右侧滚动条列
		idField:'roleId',
	    columns:[[
	        {field:'roleName',title:'角色名',width:100,align:'center'},
	        {field:'flag',title:'文件分发功能',width:100,align:'center'
	        	,formatter:function(value, row, index){
				switch (row.flag) {
				case "0":
					return "未指定";
				case "1":
					return "指定";
				default :
					return "数据异常";
			}},
	        // 进入编辑模式,才能启用editor
	        editor:{
	        	type:'combobox',
				options:{
					valueField:'flag',
					textField:'flagName',
					editable:false,
					panelHeight:'auto',
					data:[{flag:'0', flagName:'未指定'},{flag:'1', flagName:'指定'}],
					required:true
				}
	        }},
	        {field:'action',title:'操作',width:80,align:'center',
				// 根据row.editing的值显示不同的操作
				formatter:function(value,row,index){
					// 第一次加载时,row.editing为undefined
					if (row.editing){
						var s = '<a href="javascript:void(0)" οnclick="saverow(this)">保存</a> ';
						var c = '<a href="javascript:void(0)" οnclick="cancelrow(this)">取消</a>';
						return s+c;
					} else {
						var e = '<a href="javascript:void(0)" οnclick="editrow(this)">编辑</a> ';
						//var d = '<a href="javascript:void(0)" οnclick="deleterow(this)">Delete</a>';
						//return e+d;
						return e;
					}
				}
			}
	    ]],
    	url:'./para/loadFileDistPara.do',
		// 编辑之前事件,刷新row,使得row.editing为true,操作栏变成保存与取消
		onBeforeEdit:function(index,row){
			row.editing = true;
			$(this).datagrid('refreshRow', index);
		},
		// 编辑完成后,刷新row,使得row.editing为false,操作栏变成编辑
		onAfterEdit:function(index,row){
			row.editing = false;
			$(this).datagrid('refreshRow', index);
		},
		// 编辑取消后,刷新row,使得row.editing为false,操作栏变成编辑
		onCancelEdit:function(index,row){
			row.editing = false;
			$(this).datagrid('refreshRow', index);
		}
	});
});
3.easyui validator扩展

下面代码直接保存为js,在html页面中引用该js文件即可

$.extend(
	$.fn.validatebox.defaults.rules,
	{
		minLength : { // 判断最小长度
			validator : function(value, param) {
				return value.length >= param[0];
			},
			message : '最少输入 {0} 个字符。'
		},
		length : {
			validator : function(value, param) {
				var len = $.trim(value).length;
				return len >= param[0] && len <= param[1];
			},
			message : "内容长度介于{0}和{1}之间."
		},
		onlyLength : {
			validator : function(value, param) {
				var len = $.trim(value).length;
				return len == param[0];
			},
			message : "内容长度必须为{0}."
		},
		phone : {// 验证电话号码
			validator : function(value) {
				return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i
						.test(value);
			},
			message : '格式不正确,请使用下面格式:028-86789101'
		},
		mobile : {// 验证手机号码
			validator : function(value) {
				return /^(13|15|18|17|14)\d{9}$/i.test(value);
			},
			message : '手机号码格式不正确(正确格式如:13550017681)'
		},
		phoneOrMobile : {// 验证手机或电话
			validator : function(value) {
				return /^(13|15|18|17|14)\d{9}$/i.test(value)
						|| /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i
								.test(value);
			},
			message : '请填入手机或电话号码,如13550017681或028-86789101'
		},
		idcard : {// 验证身份证
			validator : function(value) {
				return /^\d{15}(\d{2}[A-Za-z0-9])?$/i.test(value);
			},
			message : '身份证号码格式不正确'
		},
		floatOrInt : {// 验证是否为小数或整数
			validator : function(value) {
				return /^(\d{1,3}(,\d\d\d)*(\.\d{1,3}(,\d\d\d)*)?|\d+(\.\d+))?$/i
						.test(value);
			},
			message : '请输入数字,并保证格式正确'
		},
		currency : {// 验证货币
			validator : function(value) {
				return /^d{0,}(\.\d+)?$/i.test(value);
			},
			message : '货币格式不正确'
		},
		qq : {// 验证QQ,从10000开始
			validator : function(value) {
				return /^[1-9]\d{4,9}$/i.test(value);
			},
			message : 'QQ号码格式不正确(正确如:95557251)'
		},
		integer : {// 验证整数
			validator : function(value) {
				return /^[+]?[1-9]+\d*$/i.test(value);
			},
			message : '请输入整数'
		},
		chinese : {// 验证中文
			validator : function(value) {
				return /^[\u0391-\uFFE5]+$/i.test(value);
			},
			message : '请输入中文'
		},
		chnLength: {// 验证中文
			validator : function(value) {
				return /^[\u0391-\uFFE5]+$/i.test(value);
			},
			message : '请输入中文'
		},
		english : {// 验证英语
			validator : function(value) {
				return /^[A-Za-z]+$/i.test(value);
			},
			message : '请输入英文'
		},
		num : {// 纯数字
			validator : function(value) {
				return /^[0-9]+$/i.test(value);
			},
			message : '请输入纯数字'
		},
		unnormal : {// 验证是否包含空格和非法字符
			validator : function(value) {
				return /.+/i.test(value);
			},
			message : '输入值不能为空和包含其他非法字符'
		},
		username : {// 验证用户名
			validator : function(value) {
				return /^[a-zA-Z][a-zA-Z0-9_]{5,15}$/i.test(value);
			},
			message : '用户名不合法(字母开头,允许6-16字节,允许字母数字下划线)'
		},
		faxno : {// 验证传真
			validator : function(value) {
				// return /^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[
				// ]){1,12})+$/i.test(value);
				return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i
						.test(value);
			},
			message : '传真号码不正确'
		},
		zip : {// 验证邮政编码
			validator : function(value) {
				return /^[1-9]\d{5}$/i.test(value);
			},
			message : '邮政编码格式不正确'
		},
		ip : {// 验证IP地址
			validator : function(value) {
				return /d+.d+.d+.d+/i.test(value);
			},
			message : 'IP地址格式不正确'
		},
		name : {// 验证姓名,可以是中文或英文或数字
			validator : function(value) {
				return /^[\u0391-\uFFE5]+$/i.test(value)
						| /^\w+[\w\s]+\w+$/i.test(value)
						| /^[0-9]+$/i.test(value);
			},
			message : '请输入姓名(中文或英文或数字)'
		},
		carNo : {
			validator : function(value) {
				return /^[\u4E00-\u9FA5][\da-zA-Z]{6}$/.test(value);
			},
			message : '车牌号码无效(例:粤J12350)'
		},
		carenergin : {
			validator : function(value) {
				return /^[a-zA-Z0-9]{16}$/.test(value);
			},
			message : '发动机型号无效(例:FG6H012345654584)'
		},
		email : {
			validator : function(value) {
				return /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
						.test(value);
			},
			message : '请输入有效的电子邮件账号(例:abc@126.com)'
		},
		msn : {
			validator : function(value) {
				return /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
						.test(value);
			},
			message : '请输入有效的msn账号(例:abc@hotnail(msn/live).com)'
		},
		department : {
			validator : function(value) {
				return /^[0-9]*$/.test(value);
			},
			message : '请输入部门排序号(例:1)'
		},
		same : {
			validator : function(value, param) {
				if ($("#" + param[0]).val() != "" && value != "") {
					return $("#" + param[0]).val() == value;
				} else {
					return false;
				}
			},
			message : '两次输入的密码不一致!'
		}
});

easyui validator用法:

比如要验证IP地址,在上面js中validator的方法为function(value){},该value就是值html中input框的值,所以html中校验ip的写法为:

<input name="ip" class="easyui-textbox" prompt="请输入IP" style="width:200px" data-options="validType:ip" />

对于minLength,验证方法为function(value, param),其中value为前端页面input中的值,param是一个数组,可以使用param[0],param[1]来引用,在这里只能引用param[0],结果为8

<input name="num" class="easyui-textbox" prompt="请输入最小长度8的字符串" style="width:200px" data-options="minLength[8]" />

对于length,value为前端页面input中的值,param[0]为1,param[1]为10

<input name="length" class="easyui-textbox" prompt="请输入长度1-10之间的字符串" style="width:200px" data-options="length[1,10]" />
对于一次要校验多个条件的,可以写成(notSame是自定义的校验规则,上面代码没有):

<input name="id" class="easyui-textbox" prompt="请输入档案编号" style="width:200px" data-options="validType:['num','minLength[1]','notSame[2]']" />


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值