![](/img/trans.png)
[英]How to add IF ELSE condition for rules (for multiple forms) in Jquery validation
[英]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.