Javascript jQuery验证-根据用户选择设置条件规则
是否可以使用jQuery validate轻松设置条件规则 简单地说,我正在尝试添加一些逻辑,即如果勾选了复选框“A”,那么字段“A”必须完成,如果复选框“B”完成,那么字段“B1”和“B2”必须完成 e、 g如果选中了名为“paypal”的复选框,则必须填写名为“paypal\u address”的字段 我现有的逻辑如下:Javascript jQuery验证-根据用户选择设置条件规则,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,是否可以使用jQuery validate轻松设置条件规则 简单地说,我正在尝试添加一些逻辑,即如果勾选了复选框“A”,那么字段“A”必须完成,如果复选框“B”完成,那么字段“B1”和“B2”必须完成 e、 g如果选中了名为“paypal”的复选框,则必须填写名为“paypal\u address”的字段 我现有的逻辑如下: <script type="text/javascript"> $(document).ready(function () { $('#checkout-fo
<script type="text/javascript">
$(document).ready(function () {
$('#checkout-form').validate({
rules: {
first_name: {
minlength: 2,
required: true
},
last_name: {
minlength: 2,
required: true
},
address_1: {
minlength: 2,
required: true
},
address_2: {
minlength: 2,
required: true
},
post_code: {
minlength: 2,
required: true
},
email: {
required: true,
email: true
},
terms: {
required: true,
}
},
errorPlacement: function(error, element) {
element.addClass('error');
},
highlight: function (element) {
$(element).addClass('nonvalid')
.closest('.form-group').removeClass('error');
},
success: function (element) {
//element.addClass('valid')
//.closest('.form-group').removeClass('error');
element.remove('error');
}
});
})) Edit:一开始我没有正确理解这个问题,对此我深表歉意:p但是,这里有一个解决方案应该是可行的 您可以做的是检查复选框是否已选中,然后为paypal_地址设置所需的规则:
var checked = false;
$( "#paypalCheckbox" ).on( "click", function() {
checked = $('#paypalCheckbox').is(':checked');
});
然后在规则中可以添加:
paypal_address : {
required: checked
}
您可以使用自定义验证方法。 例如:
jQuery.validator.addMethod("checkA", function(value, element) {
return YourValidationCode; // return true if field is ok or should be ignored
}, "Please complete A");
然后在规则中使用它:
rules: {
....
field_a: {
required: false,
checkA: true
},
....
}
看一看:
jQuery Validate实际上直接支持这一点,使用 您只需更改验证选项,如下所示:
$('#myform').validate({
rules: {
fieldA: {
required:'#checkA:checked'
}
}
});
就这样 jQuery以条件验证作为函数结果(添加到Ryley的上述注释):
你好,伙计-我的验证工作正常-我正在尝试做的是根据用户选择的内容制定附加规则。e、 g如果用户选中“paypal”复选框,则需要填写名为“paypal\u地址”的字段。如果他们不选择此项,则他们可以跳过此字段,而无需向paypal_地址字段添加有效的电子邮件地址。他使用的是jQuery validator,您可以创建方法,无需创建onClick()事件,因为validate()将处理一切,非常感谢您的链接。现在我知道有一个选择器:filled如果我们使用远程规则,那么这将不起作用。它将只检查所需的属性,但remote将像在正常流中一样工作。是否可以调用所需部分中的函数,并根据条件将其评估为true或false?例如
required:checkCondition()
@SarojSasmal yes-请参阅答案中的文档链接,最后一个示例是您要问的问题,嗯,这是如何与选择选项下拉列表一起工作的???如果指定的下拉列表有值,我需要一个必填项
$('#myform').validate({
rules: {
fieldA: {
required:'#checkA:checked'
}
}
});
$("#Form_Id").validate({
rules: {
CompletedBy: "required", //straight forward validation of field
Contact_No: "required",
Location: { required: noTableRow }//if no table row, make Location mandatory
}
});
//checks whether a table row exists
function noTableRow() {
return $("tr.tr_class").length == 0;
}