/*----------------------------------------easy-ui功能扩展------------------------------------------------*/ /** * @author guye * 扩展 EasyUI 的validatebox,添加验证输入的内容是数字 * 具体使用示例见/Admin/WebManager/WebPhoto_Edit.aspx */ $.extend($.fn.validatebox.defaults.rules, { number: { validator: function (value) { return !isNaN(value) && !/^\s+$/.test(value); }, message: '必须是数字!' } }); $.extend($.fn.validatebox.defaults.rules, { digits: { validator: function (value) { return !/[^\d]/.test(value); }, message: '必须是非负整数!' } }); $.extend($.fn.validatebox.defaults.rules, { dataSize: { validator: function (value) { var reg = /(^[^0]&)|(^[1-9]$)|(^[1-9][\d]{1,9}$)/; return reg.test(value); }, message: '只能输数字,并且只能是1-9开头!' } }); $.extend($.fn.validatebox.defaults.rules, { decimalPoint: { validator: function (value) { return /(^0$)|(^[1-9]$)|(^[1-9][\d]{1,9}$)/.test(value); }, message: '只能输数字!' } }); /** * @author guye * 扩展 EasyUI 的validatebox,添加验证两次密码功能 * 具体使用示例见/Interface/Index.aspx */ $.extend($.fn.validatebox.defaults.rules, { eqPwd: { validator: function (value, param) { return value == $(param[0]).val(); }, message: '密码不一致' } }); /** * @author guye * 扩展 EasyUI 的validatebox,验证新密码和原密码功能 * 具体使用示例见/Interface/Index.aspx */ $.extend($.fn.validatebox.defaults.rules, { noeqPwd: { validator: function (value, param) { return value != $(param[0]).val(); }, message: '新旧密码不能一致' } }); /** * @author guye * 扩展 EasyUI 的validatebox,输入字符数量验证 * 举例: */ $.extend($.fn.validatebox.defaults.rules, { minLength: { validator: function (value, param) { return value.length >= param[0]; }, message: '请输入至少 {0} 个字符.' } }); /** * @author guye * 扩展 EasyUI 的validatebox,添加验证密码有字母和数字组成 * 具体使用示例见/Interface/Index.aspx */ $.extend($.fn.validatebox.defaults.rules, { safepass: { validator: function (value, param) { return safePassword(value, param); }, message: "密码由字母和数字组成,至少{0}位" } }); var safePassword = function (value, param) { /* 密码由字母和数字组成,至少6位 */ // return !(/^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/.test(value)); //return (/^(?!\d+$)(?![A-Za-z]+$)[a-zA-Z0-9]{6,}$/.test(value)); // var re = "/^(?!\d+$)(?![A-Za-z]+$)[a-zA-Z0-9]{" + param + ",}$/"; var re = "/^(?![-_\~!@#\$%\^&\*\.\(\)\{\}<>\?\\\/\'\"]+$)(?![A-Za-z]+$)(?!\d+$)(?![A-Za-z]+$)(?![A-Za-z0-9]+$)(?![A-Za-z-_\~!@#\$%\^&\*\.\(\)\{\}<>\?\\\/\'\"]+$)(?![0-9-_\~!@#\$%\^&\*\.\(\)\{\}<>\?\\\/\'\"]+$)[a-zA-Z0-9-_\~!@#\$%\^&\*\.\(\)\{\}<>\?\\\/\'\"]{" + param + ",}$/"; return (eval(re).test(value)); } /** * @author py * 扩展 EasyUI 的datagrid,修复rownumber超过5位无法显示的问题 */ $.extend($.fn.datagrid.methods, { fixRownumber: function (jq) { return jq.each(function () { var panel = $(this).datagrid("getPanel"); //获取最后一行的number容器,并拷贝一份 var clone = $(".datagrid-cell-rownumber", panel).last().clone(); //由于在某些浏览器里面,是不支持获取隐藏元素的宽度,所以取巧一下 clone.css({ "position": "absolute", left: -1000 }).appendTo("body"); var width = clone.width("auto").width(); //默认宽度是25,所以只有大于25的时候才进行fix if (width > 25) { //多加5个像素,保持一点边距 $(".datagrid-header-rownumber,.datagrid-cell-rownumber", panel).width(width + 5); //修改了宽度之后,需要对容器进行重新计算,所以调用resize $(this).datagrid("resize"); //一些清理工作 clone.remove(); clone = null; } else { //还原成默认状态 $(".datagrid-header-rownumber,.datagrid-cell-rownumber", panel).removeAttr("style"); } }); } }); /** * @author guye * 扩展 EasyUI 的validatebox,验证日期必须小于某天如这里的2012-10-11 * 举例: */ $.extend($.fn.validatebox.defaults.rules, { md: { validator: function (value, param) { var d1 = $.fn.datebox.defaults.parser(param[0]); var d2 = $.fn.datebox.defaults.parser(value); return d2 <= d1; }, message: '日期必须小于或者等于 {0}.' } }) /** * @author guye * 扩展 EasyUI 的validatebox,验证 radio * 举例:Yes No */ $.extend($.fn.validatebox.defaults.rules, { requireRadio: { validator: function (value, param) { var input = $(param[0]); input.off('.requireRadio').on('click.requireRadio', function () { $(this).focus(); }); return $(param[0] + ':checked').val() != undefined; }, message: '请选择{1}的选项' } }); /** * @author guye * 扩展 EasyUI 的validatebox,验证 radio * 举例:Yes No */ $.extend($.fn.validatebox.defaults.rules, { requireCheckbox: { validator: function (value, param) { var input = $(param[0]); input.off('.requireCheckbox').on('click.requireCheckbox', function () { $(this).focus(); }); // console.log($(param[0] + ':checked').val()); return $(param[0] + ':checked').val() != undefined; }, message: '请选择{1}的选项' } }); /** * @author guye * 扩展 EasyUI 的validatebox,验证 text * 举例:Yes No */ //验证表名 $.extend($.fn.validatebox.defaults.rules, { regTable: { validator: function (value) { var reg = /(^_([a-zA-Z0-9]_?)*$)|(^[a-zA-Z](_?[a-zA-Z0-9])*_?$)/; if (reg.test(value)) //表名正确的话,校验是否已存在 { var tableId = $("#tableId").val(); var url = 'config/table/countTable?tableId=' + tableId + '&tableName=' + value; var flag = $.ajax({ url: url, async: false, cache: false, type: "post" }).responseText; //这里一定要用这种方式,如果是在ajax的回调函数里面return就不行。 var ret = flag == "true"; if (ret) { $.fn.validatebox.defaults.rules.regTable.message = '表名不能重复'; } return ret; } else { $.fn.validatebox.defaults.rules.regTable.message = '只能是字母,数字或下划线组成'; return false; } }, message: '' } }); //验证表名不能以sys和cnf 开头 $.extend($.fn.validatebox.defaults.rules, { busTable: { validator: function (value) { var ret = true; if (value.length >= 3) { var str = value.substring(0, 3); if (str == "sys" || str == "cnf") { ret = false; } } return ret; }, message: '表名不能以sys和cnf开头' } }); //验证表的显示名称不能重复 $.extend($.fn.validatebox.defaults.rules, { displayName: { validator: function (value) { var tableId = $("#tableId").val(); var url = 'config/table/countDisplayName'; var flag = $.ajax({ url: url, data: { tableId: tableId, displayName: value }, async: false, cache: false, type: "post" }).responseText; //这里一定要用这种方式,如果是在ajax的回调函数里面return就不行。 var ret = flag == "true"; return ret; }, message: '显示名称不能重复' } }); //标识验证 $.extend($.fn.validatebox.defaults.rules, { regIdentify: { validator: function (value) { var reg = /(^_([a-zA-Z0-9]_?)*$)|(^[a-zA-Z0-9](_?[a-zA-Z0-9])*_?$)/; return reg.test(value); }, message: '只能是字母或下划线组成' } }); //页签标识验证是否重复 $.extend($.fn.validatebox.defaults.rules, { subtabIdentifyCount: { validator: function (value) { var subtabId = $("#subtabId").val(); var url = 'config/subtab/subtabIdentifyCount'; var flag = $.ajax({ url: url, data: { subtabId: subtabId, subtabIdentify: value }, async: false, cache: false, type: "post" }).responseText; //这里一定要用这种方式,如果是在ajax的回调函数里面return就不行。 var ret = flag == "true"; return ret; }, message: '标识不能重复' } }); //页签标识验证是否重复 $.extend($.fn.validatebox.defaults.rules, { operationNameCount: { validator: function (value) { var operationId = $("#operationId").val(); var moduleId = $("#txt_ModuleId").val(); var url = 'config/operation/operationNameCount'; var flag = $.ajax({ url: url, data: { operationId: operationId, operationName: value, moduleId: moduleId }, async: false, cache: false, type: "post" }).responseText; //这里一定要用这种方式,如果是在ajax的回调函数里面return就不行。 var ret = flag == "true"; return ret; }, message: '同一模块下名称不能重复' } }); //视图标识验证是否重复 $.extend($.fn.validatebox.defaults.rules, { viewIdentifyCount: { validator: function (value) { var viewId = $("#viewId").val(); var moduleId = $("#moduleId").val(); var url = 'config/view/viewIdentifyCount'; var flag = $.ajax({ url: url, data: { viewId: viewId, viewIdentify: value, moduleId: moduleId }, async: false, cache: false, type: "post" }).responseText; //这里一定要用这种方式,如果是在ajax的回调函数里面return就不行。 var ret = flag == "true"; return ret; }, message: '同一模块下标识不能重复' } }); //列数比列验证 $.extend($.fn.validatebox.defaults.rules, { ratio: { validator: function (value, param) { var cloumn = $(param[0]).val(); var ratio = value.split(":"); var count = 0; var str = "^[0-9]{1,2}"; for (var i = 0; i < ratio.length; i++) { count = count + parseInt(ratio[i]); } for (var j = 1; j < cloumn; j++) { str = str + ":[0-9]" } str = str + "$"; var reg = new RegExp(str); return (reg.test(value) && count == 10); }, message: '请输入正确的比列格式' } }); //布局比列验证 $.extend($.fn.validatebox.defaults.rules, { column: { validator: function (value, param) { var rat = $(param[0]).val(); var ratio = rat.split(":"); var count = 0; var str = "^[0-9]{1,2}"; for (var i = 0; i < ratio.length; i++) { count = count + parseInt(ratio[i]); } for (var j = 1; j < value; j++) { str = str + ":[0-9]" } str = str + "$"; var reg = new RegExp(str); return (reg.test(ratio) && count == 10); }, message: '请输入正确的比列格式' } }); //验证数据类型 $.extend($.fn.validatebox.defaults.rules, { dataType: { validator: function (value) { var flag = true; switch (value) { case "binary": break; case "bit": break; case "decimal": break; case "int": break; case "float": break; case "datetime": break; case "tinyint": break; case "bigint": break; case "varchar": break; case "nvarchar": break; case "text": break; case "ntext": break; default: flag = false; } return flag; }, message: '请选择正确的数据类型' } }); //验证模块标识 $.extend($.fn.validatebox.defaults.rules, { regModuleIdentify: { validator: function (value) { var reg = /(^_([a-zA-Z0-9]_?)*$)|(^[a-zA-Z0-9](_?[a-zA-Z0-9])*_?$)/; var moduleId = $("#moduleId").val(); if (reg.test(value)) //标识正确的话,校验是否已存在 { var url = 'config/module/countModuleIdentify'; var flag = $.ajax({ url: url, data: { moduleId: moduleId, moduleIdentify: value }, async: false, cache: false, type: "post" }).responseText; //这里一定要用这种方式,如果是在ajax的回调函数里面return就不行。 var ret = flag == "true"; if (ret) { $.fn.validatebox.defaults.rules.regModuleIdentify.message = '标识不能重复'; } return ret; } else { $.fn.validatebox.defaults.rules.regModuleIdentify.message = '只能是字母或下划线组成'; return false; } }, message: '' } }); //验证接口标识 $.extend($.fn.validatebox.defaults.rules, { regInterfaceIdentify: { validator: function (value) { var reg = /(^_([a-zA-Z0-9]_?)*$)|(^[a-zA-Z0-9](_?[a-zA-Z0-9])*_?$)/; var interfaceId = $("#interfaceId").val(); if (reg.test(value)) //标识正确的话,校验是否已存在 { var url = 'interfaceDefine/countInterfaceIdentify'; var flag = $.ajax({ url: url, data: { interfaceId: interfaceId, interfaceIdentify: value }, async: false, cache: false, type: "post" }).responseText; //这里一定要用这种方式,如果是在ajax的回调函数里面return就不行。 var ret = flag == "true"; if (ret) { $.fn.validatebox.defaults.rules.regInterfaceIdentify.message = '接口标识不能重复'; } return ret; } else { $.fn.validatebox.defaults.rules.regInterfaceIdentify.message = '只能是字母或下划线组成'; return false; } }, message: '' } }); //公共字段验证是否重复 $.extend($.fn.validatebox.defaults.rules, { publicColumnCount: { validator: function (value) { var publicColumnId = $("#publicColumnId").val(); var url = 'publicColumn/publucColumnCount'; var flag = $.ajax({ url: url, data: {publicColumnId: publicColumnId, columnName: value}, async: false, cache: false, type: "post" }).responseText; //这里一定要用这种方式,如果是在ajax的回调函数里面return就不行。 var ret = flag == "true"; return ret; }, message: '字段不能重复' } }); //验证报表文件名不能重复 $.extend($.fn.validatebox.defaults.rules, { reportFile: { validator: function (value) { var reportId = $("#reportId").val(); var url = 'config/report/countReportFile'; var flag = $.ajax({ url: url, data: { reportId: reportId, reportFile: value }, async: false, cache: false, type: "post" }).responseText; //这里一定要用这种方式,如果是在ajax的回调函数里面return就不行。 var ret = flag == "true"; return ret; }, message: '报表文件名不能重复' } }); //验证表单唯一属性 $.extend($.fn.validatebox.defaults.rules, { formUnique: { validator: function (value, param) { var columnName = param.toString(); var url = 'general/formUnique'; var flag = $.ajax({ url: url, data: { tableName: tableName, tableKeyName: tableKeyName, columnName: columnName, keyId: keyId, value: value }, async: false, cache: false, type: "post" }).responseText; //这里一定要用这种方式,如果是在ajax的回调函数里面return就不行。 var ret = flag == "true"; return ret; }, message: '该字段需要唯一值,当前值已经存在!' } }); //测试 $.extend($.fn.validatebox.defaults.rules, { test: { validator: function (value, param) { var columnName = param.toString(); var url = 'general/formUnique'; var flag = $.ajax({ url: url, data: { tableName: tableName, tableKeyName: tableKeyName, columnName: columnName, keyId: keyId, value: value }, async: false, cache: false, type: "post" }).responseText; //这里一定要用这种方式,如果是在ajax的回调函数里面return就不行。 var ret = flag == "true"; return ret; }, message: '测试!' } });