jQuery validate自定义验证

ddMethod(name,method,message)方法

参数 name 是添加的方法的名字。

参数 method 是一个函数,接收三个参数 (value,element,param) 。
value 是元素的值,element 是元素本身,param 是参数。

我们可以用 addMethod 来添加除内置的 Validation 方法之外的验证方法。比如有一个字段,只能输一个字母,范围是 a-f,写法如下:

$.validator.addMethod("af",function(value,element,params){  
    if(value.length>1){
        return false;
    }
    if(value>=params[0] && value<=params[1]){
        return true;
    }else{
        return false;
    }
},"必须是一个字母,且a-f");

如果有个表单字段的 name=”username”,则在 rules 中写:

username:{
   af:["a","f"]
}

addMethod 的第一个参数,是添加的验证方法的名字,这时是 af。
addMethod 的第三个参数,是自定义的错误提示,这里的提示为:”必须是一个字母,且a-f”。
addMethod 的第二个参数,是一个函数,这个比较重要,决定了用这个验证方法时的写法。

如果只有一个参数,直接写,比如 af:”a”,那么 a 就是这个唯一的参数,如果多个参数,则写在 [] 里,用逗号分开。

 <script type="text/javascript">
        var validator;
        $(function() {

            $.validator.addMethod("compareDate", function(value, element) {
                var dateStart = $("#dateStart").val();
                var dateEnd = $("#dateEnd").val();
                return dateStart <= dateEnd;
            }, "开始日期必须早于结束日期");

            $.validator.addMethod("checkMedicalExist",
                    function(value, element) {
                        var result = true;
                        var address = $.trim($("#address").val());
                        var dateStart = $("#dateStart").val();
                        var dateEnd = $("#dateEnd").val();
                        if (address == ‘‘ || dateStart == ‘‘ || dateEnd == ‘‘) {
                            return true;
                        }
                        $.ajax({
                            type : "POST",
                            async : false,
                            url : "${ctx}/meeting/medical/checkMedical",
                            data : {
                                "address" : address,
                                "dateStart" : dateStart,
                                "dateEnd" : dateEnd
                            },
                            dataType : ‘json‘,
                            success : function(d) {
                                if (d.boolStatus == true) {
                                    var date = d.data;
                                    jBox.tip(date+‘已经存在医疗地点‘);
                                    result = false;
                                } else  {
                                    result = true;
                                }
                            }
                        });
                        return result;
                    }, "日期有冲突" );

            $.validator.addMethod("compareTime", function(value, element) {
                var timeStart = $("#timeStart").val();
                var timeEnd = $("#timeEnd").val();
                return timeStart < timeEnd;
            }, "开始时间必须早于结束时间");

            validator = $("#inputForm")
                    .validate(
                            {
                                rules : {
                                    address : {
                                        required : true
                                    },
                                    dateStart : {
                                        required : true
                                    },
                                    dateEnd : {
                                        required : true,
                                        compareDate : true,
                                        checkMedicalExist : true
                                    },
                                    timeStart : {
                                        required : true,
                                    },
                                    timeEnd : {
                                        required : true,
                                        compareTime : true
                                    },
                                    ambulanceNum : {
                                        required : true
                                    }
                                    /* name:{required:true},
                                    phone:{required:true} */
                                },
                                submitHandler : function(form) {
                                    $
                                            .ajax({
                                                type : "POST",
                                                asyn : false,
                                                url : ‘${ctx}/meeting/medical/saveMedical‘,
                                                data : $(‘#inputForm‘)
                                                        .serialize(),// 要提交的表单
                                                dataType : ‘json‘,
                                                success : function(data) {
                                                        if (data.status == ‘1‘) {
                                                            //parent.jBox.tip(‘保存成功‘);
                                                            window.parent.window.isFreshFlag=‘2‘;//刷新父页面
                                                            parent.$.jBox.close();
                                                        } else if (data.status == ‘0‘) {
                                                            if(data.boolStatus == ‘true‘){
                                                                jBox.tip(‘日期:------重复‘);
                                                            }else{
                                                                jBox.tip(‘保存失败,请重试‘);
                                                            }
                                                        }
                                                }
                                            });
                                }

                            });

        })
    </script>
© 版权声明
THE END
喜欢就支持以下吧
点赞0 分享