//关闭初始化验证,在页面加载成功后不显示验证信息 $.extend($.fn.validatebox.defaults, { //为true时关闭验证功能 novalidate:true } ); /** * * @requires jQuery,EasyUI * * 扩展validatebox */ $.extend($.fn.validatebox.defaults.rules, { checked :{//验证复选框与单选框的必填 validator : function(value, param){ var groupname = this.name, ok = false; var position = $(this).validatebox("options").tipPosition; $('input[name="' + groupname + '"]').each(function () { if (this.checked) { ok = true; return false; } }); $('input[name="' + groupname + '"]').filter(".easyui-validatebox").each(function(){ var obj = $(this), objParent = obj.parents("td"); if (!ok){ objParent.addClass('validatebox-invalid'); objParent.css({border:"2px solid #BE7E7E"}); }else{ objParent.removeClass('validatebox-invalid'); objParent.css({border:"0px"}); } objParent.mouseover(function(){ objParent.tooltip({content:"请至少选择一项!",position : position}).tooltip(ok ? "destroy" : "show"); try{ objParent.tooltip("tip").css({color:"#000",borderColor:"#CC9933",backgroundColor:"#FFFFCC"}); }catch(e){} }); }); return true }, message : '' }, eqPwd : {//验证两次密码是否相同 validator : function(value, param) { return value == $(param).val(); }, message : '密码不一致!' }, minLength: {//验证字符最小长度 validator: function(value, param){ return value.replace(/[^\x00-\xff]/g,"**").length >= param[0]; }, message: '请最少输入{0}个字符!' }, maxLength: {//验证字符最大长度 validator: function(value, param){ return value.replace(/[^\x00-\xff]/g,"**").length <= param[0]; }, message: '长度不能超过{0}个字符!' }, codeLength: {//验证代号长度 validator: function(value, param){ return value.replace(/[^\x00-\xff]/g,"**").length == param[0]; }, message: '输入长度为2' }, integer: {//验证整型 validator: function(value){ console.log(value.length); if((value.length <= 9 ) && (value == parseInt(value))){ value = parseInt(value); } // if(value == parseInt(value)){ // value = parseInt(value); // } console.log((/^[+|-]?\d+$/).test(value)); return (/^[+|-]?\d+$/).test(value); }, message: '必须是整数!如: 8' }, positiveinteger: {//验证正整型 validator: function(value){ console.log(value.length); if((value.length <= 9 ) && (value == parseInt(value))){ value = parseInt(value); } // if(value == parseInt(value)){ // value = parseInt(value); // } console.log((/^\d+?$/).test(value)); return (/^\d+?$/).test(value); }, message: '必须是正整数!' }, floatType: {//验证浮点型 validator: function(value){ if(value == parseFloat(value)){ value = parseFloat(value); } return (/^[-|\+]?\d+\.\d+$/).test(value); }, message: '必须是浮点数!如: 88.88' }, intOrFloat:{// 验证整数或小数 validator:function(value) { if(value == parseFloat(value)){ value = parseFloat(value); } return (/^\d+(\.\d+)?$/i).test(value); }, message:'请输入数字,并确保格式正确' }, intAndFloat:{//验证负数,整数,浮点 validator:function(value) { if(value == parseFloat(value)){ //对科学计数法,进行判断 value = parseFloat(value); } return (/^[-|\+]?\d+(\.\d+)?$/).test(value); }, message:'请输入数字,并确保格式正确' }, minNum: {//验证最小值 validator : function(value, param) { return parseFloat(value) >= param[0]; }, message : '不能小于{0}' }, maxNum:{//验证最大值 validator : function(value, param) { return parseFloat(value) <= param[0]; }, message : '不能大于{0}' }, btwNum:{//验证区间值 validator : function(value, param) { return (parseFloat(value) >= param[0]) && (parseFloat(value) <= param[1]); }, message : '必须在{0}到{1}之间' }, minVal:{//验证最小值(传入jquery对象) validator : function(value, param) { var obj = $(param[0]); if(obj.size() == 0) return true; if(obj.val() == '') return true; return parseFloat(value) >= obj.val(); }, message : '所填值超出范围' }, maxVal:{//验证最大值(传入jquery对象) validator : function(value, param) { var obj = $(param[0]); if(obj.size() == 0) return true; if(obj.val() == '') return true; return parseFloat(value) <= obj.val(); }, message : '所填值超出范围' }, greaterThan:{//大于 validator : function(value, param) { return parseFloat(value) > param[0]; }, message : '必须大于{0}' }, lessThan:{//小于 validator : function(value, param) { return parseFloat(value) < param[0]; }, message : '必须小于{0}' }, phone: {//验证电话号码 validator: function(value){ return (/(^[0-9]{3,4}\-[0-9]{7,8}$)|(^[0-9]{7,8}$)/).test(value); }, message: '必须是电话号码!如: 0755-2923256 或 2923256' }, mobile: {//验证手机号 validator: function(value){ return (/^1[3|4|5|7|8][\d]{9}$/).test(value); }, message: '必须是手机号码!如: 13502731773' }, email:{ validator: function(value){ return (/^\w+([-.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/).test(value); }, message: '必须是邮箱地址!如: 123456@szboanda.net' }, phoneOrMobile:{ validator: function(value){ return (/(^[0-9]{3,4}\-[0-9]{7,8}$)|(^[0-9]{7,8}$)/).test(value) || (/^1[3|4|5|7|8][\d]{9}$/).test(value); }, message: '必须是手机号码或电话号码!如: 13502731773 或 0755-2923256' }, idcard: {//验证身份证号 validator: function(value){ var rules = $.fn.validatebox.defaults.rules; var ret = platform.checkIdcard(value); //验证护照 var passportRet = platform.checkPassport(value); debugger; if(ret != null && passportRet != null){ rules.idcard.message = ret; return false; } return true; }, message: '' }, chinese:{// 验证中文 validator:function(value) { return (/^[\u0391-\uFFE5]+$/i).test(value); }, message:'请输入中文' }, nonChinese:{// 验证非中文 validator:function(value) { return (/^[^\u0391-\uFFE5]+$/i).test(value); }, message:'不能是中文' }, english:{// 验证英语 validator:function(value) { return (/^[A-Za-z]+$/i).test(value); }, message:'请输入英文字母' }, faxno:{// 验证传真 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:'传真号码不正确' }, postcode:{// 验证邮政编码 validator:function(value) { return (/^[1-9]\d{5}$/i).test(value); }, message:'邮政编码格式不正确' }, carNo:{//验证车牌号 validator:function(value){ return (/^[\u4E00-\u9FA5][\da-zA-Z]{6}$/).test(value); }, message:'车牌号码无效(例:粤J12350)' }, msn:{//验证msn账号 validator:function(value){ return (/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/).test(value); }, message:'请输入有效的msn账号(例:abc@hotnail(msn/live).com)' }, date:{//验证日期 validator: function(value, format){ var rules = $.fn.validatebox.defaults.rules; var ret = platform.date.checkDate(value, format); if(ret){ rules.date.message = ret; return false; } return true; }, message: '' }, //自定义表达式 custom:{ validator:function(value,param){ var reg = new RegExp(param[0]); return reg.test(value); }, message: '数据输入不正确' }, defaultDate:{//验证日期 validator: function(mytime, param){ //标准时间格式 var regStandard = /^\1|2\d{3}(\/|\-)\d{1,2}(\/|\-)\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}$/; //匹配标准日期格式 2014-1-20 12:10:00 //日期快速输入格式 var regA =/^\1|2\d{3}(\/|\-)\d{1,2}(\/|\-)\d{1,2}(\/|\-)\d{1,2}(\/|\-)\d{1,2}(\/|\-)\d{1,2}$/; //匹配日期 和 时\分\秒 2014-1-20-12-10-00 意思是2014-1-20 12:10:00 var regB =/^\1|2\d{3}(\/|\-)\d{1,2}(\/|\-)\d{1,2}(\/|\-)\d{1,2}(\/|\-)\d{1,2}$/; //匹配日期 和 时\分 2014-1-20-12-10-00 意思是2014-1-20 12:10 var regC =/^\1|2\d{3}(\/|\-)\d{1,2}(\/|\-)\d{1,2}$/; //匹配日期 2014-1-20 var x = ""; var DateParam = (param && param[0]) ? param[0] : "-"; var TimeParam = (param && param[1]) ? param[1] : ":"; if(!regStandard.test(mytime)){ if(regA.test(mytime)){ var tempArr = mytime.split(param); x = tempArr[0] + param + tempArr[1] + param + tempArr[2] + " " + tempArr[3] + ":" + tempArr[4] + ":" + tempArr[5]; /**/ if(!(platform.checkDateTime("date",x,DateParam) && platform.checkDateTime("time",x,TimeParam))) { return false; } }else if(regB.test(mytime)){ var tempArr = mytime.split('-'); x = tempArr[0] + param + tempArr[1] + param + tempArr[2] + " " + tempArr[3] + ":" + tempArr[4] + ":00"; /**/ if(!(platform.checkDateTime("date",x,DateParam) && platform.checkDateTime("time",x,TimeParam))) { return false; } }else if(regC.test(mytime)){ x = mytime + " 00:00:00"; /**/ if(!platform.checkDateTime("date",x,DateParam)) { return false; } }else{ return false; } }else{ if(!(platform.checkDateTime("date",mytime,DateParam) && platform.checkDateTime("time",mytime,TimeParam))) { return false; } } return true; }, message: '日期格式错误' }, equalsDate:{ /** * 比较时间或日期的前后 * 编辑页面使用:validType="equalsDate['#RZKSSJ', '任职开始时间不能大于结束时间']" , * 参数一:需要比较的控件,参数二:提示信息 * 子表页面使用:validType:'equalsDate[gzjl_datagrid, \'工作经历开始日期不能大于结束日期\', \'equalDate\']', * 参数一:需要验证的datagrid表格对象,参数二:提示信息,参数三:需要比较的日期的字段名 */ validator: function(value, params){ var obj = "", msg = "结束时间不能大于开始时间", equalsField, equalsValue; if(platform.isNotEmpty(params)){ obj = params[0] || obj; msg = params[1] || msg; equalsField = params[2]; } obj = platform.getObject(obj); try{ var index = $(this).parents('.datagrid-row').attr('datagrid-row-index'); equalsField = obj.datagrid("getEditor", {index:index,field:equalsField}); try{ equalsValue = $(equalsField.target).datebox("getValue"); }catch(e){ equalsValue = $(equalsField.target).datetimebox("getValue"); } }catch(e){ try{ equalsValue = obj.datebox("getValue"); }catch(e){ equalsValue = obj.datetimebox("getValue"); } } var rules = $.fn.validatebox.defaults.rules; rules.equalsDate.message = msg; return value >= equalsValue; }, message: '' }, equalsNum:{ /** * 比较两个数字的大小 * 编辑页面使用:validType="equalsNum['#maxNum', '最小值不能大于最大值']" , * 参数一:需要比较的控件,参数二:提示信息 * 子表页面使用:validType:'equalsNum[gzjl_datagrid, \'最小值不能大于最大值\', \'minNum\']', * 参数一:需要验证的datagrid表格对象,参数二:提示信息,参数三:需要比较的数字的字段名 */ validator: function(value, params){ var obj = "", msg = "最小值不能大于最大值", equalsField, equalsValue; if(platform.isNotEmpty(params)){ obj = params[0] || obj; msg = params[1] || msg; equalsField = params[2]; } obj = platform.getObject(obj); try{ var index = $(this).parents('.datagrid-row').attr('datagrid-row-index'); equalsField = obj.datagrid("getEditor", {index:index,field:equalsField}); $(equalsField.target).numberbox("getValue"); }catch(e){ equalsValue = obj.numberbox("getValue"); } var rules = $.fn.validatebox.defaults.rules; rules.equalsNum.message = msg; return parseFloat(value) > parseFloat(equalsValue); }, message: '' }, /** * 验证combobox等控件不为空,可扩展 * 使用方法isNotEmpty['#id','combobox'] */ isNotEmpty:{ validator: function(value, params){ var obj, type = "combobox"; if(platform.isNotEmpty(params)){ obj = params[0] || obj; type = params[1] || type; } obj = platform.getObject(obj); if("combobox" == type){ value = obj.combobox("getValue"); } return platform.isNotEmpty(value); }, message: '该输入项为必填项' }, /** * json * */ isJson:{ validator: function(value){ var isjson = false; try { var obj = eval("("+value+")"); if(typeof(obj) == "object"){ if(Object.prototype.toString.call(obj).toLowerCase() == "[object object]"){ if(!obj.length){ isjson = true } }else if(Object.prototype.toString.call(obj).toLowerCase() == "[object array]"){ if(obj.length){ isjson = true } } } } catch (e) { } return isjson; }, message: '字符串不符合json规范!' }, /** * json * */ isUnique:{ validator: function(value,params){ $.ajax({ url: Common.webRoot() + '/platform/tools/toolcontroller/checkisunique4ajax', type: 'POST', contentType: 'application/json;charset=UTF-8', dataType:"json", async:false, data:{ "TABLENAME": params[0], "COLUMNNAME": params[1], "VALUE": value }, success: function(result){ if("false" == result.data.isUnique){ return false; } return result.data.isUnique; }, error: function(result){ return false; } }); }, message: 'key值已经存在!' } });