邮政编码/邮政编码的jquery验证规则
我得到了以下部分有效的代码。如果国家是加拿大pay_id_1==1,我需要验证加拿大邮政;如果pay_id_1==234,我需要验证美国邮政编码邮政编码/邮政编码的jquery验证规则,jquery,jquery-validate,Jquery,Jquery Validate,我得到了以下部分有效的代码。如果国家是加拿大pay_id_1==1,我需要验证加拿大邮政;如果pay_id_1==234,我需要验证美国邮政编码 问题是这两条规则都适用于任何国家。您能看到我看不到的吗?您需要利用.rules方法动态更改字段上的规则 您可以使用单击和聚焦事件触发该函数。使用.validate方法中的rules对象设置任何初始默认规则 另外,如另一个答案中所述,您需要使用引号,因为字段中的值是字符串 $('[name="par_codepostal_1"]').on('click
问题是这两条规则都适用于任何国家。您能看到我看不到的吗?您需要利用.rules方法动态更改字段上的规则 您可以使用单击和聚焦事件触发该函数。使用.validate方法中的rules对象设置任何初始默认规则 另外,如另一个答案中所述,您需要使用引号,因为字段中的值是字符串
$('[name="par_codepostal_1"]').on('click focus', function() {
if ($("#pay_id_1").val() === '1') {
$(this).rules('add', {
postalCodeCA: true,
zipcodeUS: false
});
} else if ($("#pay_id_1").val() === '234') {
$(this).rules('add', {
postalCodeCA: false,
zipcodeUS: true
});
} else {
// whatever
}
});
演示:
或者,您可以在模糊pay_id_1字段时触发规则更改
演示:发布相关HTML,以便构建演示。当你这样做的时候,去掉所有不相关的字段。这只是一个演示该问题的最小示例。另外,您严格检查$pay_id_1.val(返回字符串)与数字文本1和234之间的相等性。即使$pay_id_1.val为'234',每次都会失败234'===234==>false。您有三个选项:1将$pay_id_1.val转换为数字。例:+$pay\u id\u 1.val==1。2将数字文字转换为字符串文字。例如:$pay\u id\u 1.val=='1'。3使用运行自动类型强制的双等于运算符:Ex:$pay\u id\u 1.val==1。模糊解决方案运行良好。我添加了更改事件。谢谢!
$('[name="par_codepostal_1"]').on('click focus', function() {
if ($("#pay_id_1").val() === '1') {
$(this).rules('add', {
postalCodeCA: true,
zipcodeUS: false
});
} else if ($("#pay_id_1").val() === '234') {
$(this).rules('add', {
postalCodeCA: false,
zipcodeUS: true
});
} else {
// whatever
}
});
$('#pay_id_1').on('blur', function() {
if ($(this).val() === '1') {
$('[name="par_codepostal_1"]').rules('add', {
postalCodeCA: true,
zipcodeUS: false
});
} else if ($(this).val() === '234') {
$('[name="par_codepostal_1"]').rules('add', {
postalCodeCA: false,
zipcodeUS: true
});
} else {
// whatever
}
});