传统验证框架的弊端: 大多的验证框架验证决定是否提交,对于非必填字段 需要验证 但是不一定要填写,这就暴漏了大多数验证框架的弊端。
不过jquery还提供了一种只验证是否通过的方法pageIsValid。
但是实际运用中发现jquery formValdator的pageIsValid验证有问题,所有的验证字段都通过了,但是无法提交,对于一个form 可以,但是对于多个form的同时提交就出现问题了,所以修改验证方法,添加pageIsValid2 方法。返回数字的话就不会出现像return true,return false各种奇形怪状的问题, pageIsValid函数不能验证多个form 里面都写死了 group。
这里只验证各个字段是否通过验证,并不提交。
//多个Group,验证所有需要验证的对象,并返回是否验证成功。 pageIsValid2 : function (validatorgroup) {// 0 验证不通过 1 验证通过 var iValid = 1; if(validatorgroup == null || validatorgroup == undefined){validatorgroup = "1"}; var isvalid = true; var thefirstid = "",thefirsterrmsg; var returnObj,setting; var error_tip = "^"; var initConfig = $.formValidator.getInitConfig(validatorgroup); var jqObjs = $(initConfig.validobjectids); jqObjs.each(function(i,elem){ if(elem.settings[0].bind){ returnObj = $.formValidator.oneIsValid(elem.id,1); if(returnObj!=null){ if(returnObj.isvalid==false){ iValid = 0; } } } / if(returnObj) { var tipid = elem.settings[0].tipid; //校验失败,获取第一个发生错误的信息和ID 表单下的错误信息提示 if (!returnObj.isvalid) { isvalid = false; if (thefirstid == ""){ thefirstid = returnObj.id; thefirsterrmsg = (returnObj.errormsg==""?returnObj.setting.onerror:returnObj.errormsg) } } //为了解决使用同个TIP提示问题:后面的成功或失败都不覆盖前面的失败 if (!initConfig.alertmessage){ if (error_tip.indexOf("^" + tipid + "^") == -1) { if (!returnObj.isvalid) { error_tip = error_tip + tipid + "^"; } $.formValidator.showMessage(returnObj); } } } if(!isvalid) { // 弹出第一个错误提示信息 var obj = $("#"+thefirstid).get(0); initConfig.onerror(thefirsterrmsg,obj); if(thefirstid!="" && initConfig.errorfocus){$("#"+thefirstid).focus();} } // 只验证 不提交 }); return iValid; },