繁体   English   中英

jQuery验证具有多个if / else条件的规则

[英]jquery validate rules with multiple if/else condition

我想对2个交叉字段使用jquery validate()规则。 如果在任何一个字段中键入另一个字段,则也是必需的。 同样,一旦需要它们,则数字字段的格式应为1st 15位数字,应为整数,日期字段应为mm / dd / yyyy格式,并且日期应小于今天的日期。

//..

    $("#adjustmentsFormID").validate({
    rules: {            
    refTranNbr: "required",
    refTranDate: "required"
    },
        messages: {         
            refTranNbr: {
                required: function (element) {
                    if($("#refTranDate").val().length > 0){
                        return "Please enter the reference transaction number ";
                    } else if(!refNumChk($("#refTranNbr").val())){
                         return "Please enter a valid Reference Transaction Number";                    
                    } else {
                        return false;
                    }
                }
            },          
            refTranDate: {
                required : function (element) {
                    var tdate = $("#refTranDate").val();
                    if($("#refTranNbr").val().length > 0){                      
                        return "Please enter a date for the Refering Transaction to complete this transaction.";
                    }else if((new Date() > new Date(tdate))) {
                        return "Please enter a reference transaction date less than today's date.";
                    }else{
                        return false;
                    }

                }
        }, 
    }); 


..//

在这两种情况下,必填条件的第一条件都是有效的。 但是,对于refNum字段,具有refNumChk的第二个条件不起作用。 实际上它没有被调用。 同样,对于refTranDate,必需的字段验证有效,但是不会检查date> tDate。 不知道这种方法是否行得通,或者我是否应该针对多种情况做一些不同的事情。

您对jQuery的验证方法是错误的, messages是用来在验证错误的情况下,仅返回的错误信息。

因此,您要做的唯一验证就是必需的验证,您可以添加自定义验证规则来解决此问题

 jQuery(function($) { jQuery.validator.addMethod("refNumChk", function(value, element, params) { return this.optional(element) || /^\\d{15}[AZ]$/.test(value); }, jQuery.validator.format("Enter a value in forat aa-999")); jQuery.validator.addMethod("lessThanToday", function(value, element, params) { return this.optional(element) || new Date() > new Date(value); }, jQuery.validator.format("Value should be less than today")); $("#adjustmentsFormID").validate({ rules: { refTranNbr: { required: true, //refNumChk: true pattern: /^\\d{15}[AZ]$/ }, refTranDate: { required: true, lessThanToday: true } }, messages: { refTranNbr: { required: "Please enter the reference transaction number", pattern: "Please enter a valid Reference Transaction Number" }, refTranDate: { required: "Please enter a date for the Refering Transaction to complete this transaction.", lessThanToday: "Please enter a reference transaction date less than today's date." }, } }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.js"></script> <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/additional-methods.js"></script> <form id="adjustmentsFormID" method="post" action=""> <div> <input name="refTranNbr" /> </div> <div> <input name="refTranDate" /> </div> <input type="submit" value="Save" /> </form> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM