/*----------------------------------------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,输入字符数量验证
|
* 举例:<input class="easyui-validatebox" data-options="validType:'minLength[5]'">
|
*/
|
$.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
|
* 举例:<input class="easyui-datebox" required data-options="validType:'md[\'2012-10-11\']'"></input>
|
*/
|
$.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
|
* 举例:<input class="easyui-validatebox" type="radio" name="yes_no" value="1" data-options="validType:'requireRadio[\'#ff input[name=yes_no]\', \'Yes or no\']'">Yes
|
|
<input class="easyui-validatebox" type="radio" name="yes_no" value="0">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
|
* 举例:<input class="easyui-validatebox" type="radio" name="yes_no" value="1" data-options="validType:'requireCheckbox[\'#ff input[name=yes_no]\', \'Yes or no\']'">Yes
|
|
<input class="easyui-validatebox" type="radio" name="yes_no" value="0">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
|
* 举例:<input class="easyui-validatebox" type="text" name="yes_no" value="1" data-options="validType:'requireCheckbox[\'#ff input[name=yes_no]\', \'Yes or no\']'">Yes
|
|
<input class="easyui-validatebox" type="text" name="yes_no" value="0">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: '测试!'
|
}
|
});
|