/*----------------------------------------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: '测试!'
}
});