jquery validate的使用技巧
统一加上validate验证,可以包括暂存和真实存储,数据暂存的时候,可以调用setRulesByAttr("form","saveValid")方法验证数据合法性后,提交数据至缓存空间,如memcached.
/** * 重置所有input select之类表单项的验证规则 * 接受若干个参数 参数对应相关表单项的自定义属性名,属性值是可以转换为rule的json字串 * 例如:<input saveValid="{required:true}" validateValid="{required:true,number:true}" " type="text" value="" /> * 在调用时至少要有一个参数 是form的ID * 另外 如果标签的自定义属性ignoreRules是"true"字串 那么这个标签将不会被验证 *例子:<input name="zinv.alimony" saveValid="{number:true}" validateValid="{number:true,required:true}" value="${fn:escapeXml(zinv.alimony)}" type="text" size="10" />元/月 *调用方式: setRulesByAttr("form","saveValid")或setRulesByAttr("form","validateValid"); */ function setRulesByAttr(formId){ //传入的第一个元素为表单 var frm = $("#" + arguments[0]); var e = frm.find("input, select, textarea"); // 遍历每个元素 for(var i = 0; i < e.length; i++){ var je = $(e[i]); // 是否有时间控件 var onf = je.attr("onfocus"); var hasDate = false; if(onf != null && onf.toString().indexOf("WdatePicker") >= 0) hasDate = true; // 清空验证规则 try{ je.rules("remove"); }catch(exx){ //document.ready里必须加上$('#formId...').validate() alert("移除对象验证规则错,是否缺少$('#formId...').validate()方法\n" + exx.name + "\n" + exx.message); continue; } //如果只传递了一个formId,那么意思就是说取消所有validate验证规则 if(arguments.length <= 1) continue; // 判断对象的ignoreRules,true的话,忽略validate验证规则 var irs = je.attr("ignoreRules"); if(irs != null && $.trim(irs) == "true") continue; // 遍历所有属性,如'saveValid'属性, for(var j=1; j<arguments.length; j++){ // rule的属性名 var a = $.trim(arguments[j]); // 取出属性值 var asv = je.attr(a); if(asv != null && $.trim(asv).length > 0){ // 将属性值转为rule json try{ //将json串转换为json对象. var jr = eval("(" + asv + ")"); if(hasDate){ // 如果有日历控件 那么强制加上时间验证 jr.dateISO = true; } // 增加验证规则,这种增加方式出于validate框架支持 je.rules("add", jr); }catch(ex){ // 转换出错 alert("无法将“" + asv + "”转换成合法的json"); } } } } }
这样就避免了大量的js验证代码存在于每个不同的页面中!
:)
相关推荐
rumengqiang 2012-11-23
云海梦尘 2016-09-01
jiaojiao0 2015-01-28
YOKOELEMENT 2014-12-17
我取第一个参数 alert;也就是说 如果我输入的字符串和 这个pattern 格式不匹配呢 也就是 pattern.test为false. pattern.test 为ture 进入if(){}里边
娇喘地白菜 2012-09-22
水荷 2012-06-01
scjcjlu 2011-08-24
scjcjlu 2011-07-22
80163956 2018-07-26
phpmysql足迹 2017-03-06
xiaobozhu 2017-03-01
80473064 2017-01-04
82264451 2016-12-27
80443664 2016-12-15