根据jquery validate验证插件改写
来源:互联网 发布:python 图形界面 exe 编辑:程序博客网 时间:2024/05/07 16:06
自网站刊登页改版以来使用的jq的验证插件已经使用一段时间,总结一下:
1.使用方便,通过json格式将每个要验证的控件传入进去.
2.扩展简便,如果插件自带的验证条件不满足,可以自定义验证函数。
当然也有不足点:
IE浏览器使用会很卡,验证会被执行多次,验证程序执行过程中占用过多的CPU,同样的验证会被执行多次,插件性能有待提高。
验证的取值默认是根据元素的name,要先与后端达成一致。
jq验证插件非常灵活,可以对其提供的一些接口和函数达到你想要的效果。
首先介绍下我根据我们网站需求更改后的版本:
页面格式:
jquery 插件公共验证:
//清除錯誤信息function clear_error_info(param_rule){//循環綁定規則內元素的blur事件noblur_arr = param_rule.noblur;for(var rule_key in param_rule.rules){if(typeof noblur_arr == 'undefined'){$jq("#"+rule_key).blur(function (){clear_func($jq(this));});}}}function clear_func(this_elem){//驗證當前元素是否通過驗證if(this_elem.valid() > 0){//是否為單個元素對應的DIVif($jq("#parent_"+this_elem.attr("id")).length < 1){//找到組內的主驗證DIV$jq(this_elem.parents("td").find("div[id^=parent_]")).hide();}else{$jq("#parent_"+this_elem.attr("id")).hide();}}}//公共驗證函數 param_form:表單名 param_rule:驗證規則 param_callback:提交表單回調function publicValid(param_form,param_rule,param_callback){//清除錯誤信息clear_error_info(param_rule);//調用驗證規則$jq("#"+param_form).validate(param_rule);//錯誤信息ajax提交if(typeof param_callback != "undefined"){$jq("#"+param_form).submit(function (){eval(param_callback+"()");})}}/* 輸出錯誤信息 */function validError(errorMap,errorList,groups){var groupsArray = new Array();var error_info = "";if(errorList.length > 0){for(var list in errorMap){if(typeof groups[list] == "undefined"){errorMaplist = errorMap[list];//替换特殊namelist = list.split("[]").join("");list = list.split(".").join("_");$jq("#parent_"+list+"_span").html(errorMaplist);$jq("#parent_"+list+"").show();}else{if($jq.inArray(groups[list],groupsArray) < 0){$jq("#parent_"+groups[list]+"_span").html(errorMap[list]);$jq("#parent_"+groups[list]+"").show();groupsArray.push(groups[list]);}}error_info += list + " ";}//輸出所有錯誤信息到隱含域(用於ajax提交錯誤信息)if($jq("#hid_error_info").length < 1){$jq("body").append("<input type='hidden' id='hid_error_info' value='' />");}$jq("#hid_error_info").val(error_info);}}
页面引入公共验证插件JS,然后调用:
/* 刊登驗證規則 */var _rule = {rules:{community_name:{required:true},.....(自定义验证规则)},messages:{community_name:"社區名稱為必填項,請填寫。",.....(自定义验证规则信息)},groups:{region:"region_id section_id street_id",finish_year:"finish_year finish_month"},showErrors:function(errorMap,errorList){validError(errorMap,errorList,this.groups);}}//刊登驗證$jq(document).ready(function(){publicValid("postForm", _rule);});
这里只需要传入表单名和自定义验证的JSON变量就OK了,如果提交表单后需要继续执行自定义函数,可以传入第三个参数执行回调(一般用来绑定复杂的验证)。
注意点:
在显示页面错误信息的规则定义为:
外部包含一个DIV且ID为:parent_XXX(你验证对应的页面元素name),里面的SPAN id为:parent_XXX_span,class定义错误样式。如果要修改规则务必将validError函数内部 $jq("#parent_"+list+"_span") 和 $jq("#parent_"+list+") 一并修改。
同组内容验证规则:
当页面多个元素需要用到同一个验证,一般DIV ID为groups对应的key,即:
region:"region_id section_id street_id",
后续:
验证流程一般都大同小异,可能不同的一般都是显示错误信息。
function validError(errorMap,errorList,groups){
通过修改该函数就可以达到自己想要的错误信息显示效果,里面包含了页面所有错误信息的集合和分组的信息。
- 根据jquery validate验证插件改写
- jquery插件validate验证
- jquery validate验证插件
- jQuery Validate 验证插件
- Jquery表单验证插件validate
- jQuery表单验证插件 Validate
- jQuery验证插件 Validate详解
- 表单验证插件jquery.validate
- jquery validate表单验证插件
- jquery validate表单验证插件
- jquery validate表单验证插件
- jquery validate表单验证插件
- Jquery-validate验证插件自定义验证方法
- jquery插件——验证插件(Validate)
- jquery插件——验证插件(Validate)
- jQuery验证插件 ---jquery.validate.js
- jquery之验证插件jquery.validate.js
- jquery表单验证插件jquery.validate.js
- Ext体验之旅------布局与树
- Visual Studio 2010建模学习
- hoj 1917 2-sat 模板题
- MFC 框架各类指针的获取
- JavaBean中使用JDBC方式进行事务处理
- 根据jquery validate验证插件改写
- JavaScript中的apply()方法和call()方法使用介绍
- 【你不知道的mongo】-【Replica Sets搭建】
- android camera(四):camera 驱动 GT2005
- 软件工程师所需掌握的“终极技术”是什么?
- 几种排序算法的稳定性和时间空间复杂度
- CATransform3D 矩阵变换之立方体旋转实现细节 .
- NSLocalizedString 实现国际化
- Ubuntu 配置WebDav服务器