当前位置: 代码迷 >> Web前端 >> jquery validate的施用技巧
  详细解决方案

jquery validate的施用技巧

热度:125   发布时间:2012-09-24 13:49:41.0
jquery validate的使用技巧
统一加上validate验证,可以包括暂存和真实存储.

 /**
    * 重置所有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");
    */
    function setRulesByAttr(){
        //传入的第一个元素为表单
        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;
            }
            
            if(arguments == null || arguments.length <= 0)
                continue;

            // 判断对象的ignoreRules
            var irs = je.attr("ignoreRules");
            if(irs != null && $.trim(irs) == "true")
                continue;

            // 遍历所有属性                    
            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{
                       var jr = eval("(" + asv + ")");
                       if(hasDate){
                       		// 如果有日历控件 那么强制加上时间验证
                       	jr.dateISO = true;
                       }
                       // 增加验证规则
                       je.rules("add", jr);
                    }catch(ex){
                       // 转换出错
                       alert("无法将“" + asv + "”转换成合法的json");
                    }
                }
            }
        }
    }



这样就避免了大量的js验证代码存在于每个不同的页面中!

:)
  相关解决方案