我有2个字段
<input type="text" name="num_gals" placeholder="Num of Gallons">
<input type="checkbox" value="TRUE" name="full_tank">Full Tank?
我正在使用jquery-validation来强制执行以下规则。 输入字段“num_gals”应具有非零值,或者应选中“full_tank”复选框。
我尝试了以下但是似乎没有用。
rules:
{
num_gals:
{
required: function()
{
if ($('.full_tank').val(':checked')) {
return false;
} else {
return true;
}
}
},
full_tank:
{
required: function()
{
if ($('.num_gals').val() == '') {
return true;
} else {
return false;
}
}
}
},
messages:
{
num_gals:
{
required: 'Provide Num Gals or Check Full Tank'
},
full_tank:
{
required: 'Provide Num Gals or Check Full Tank'
}
}
非常感谢帮助!
答案 0 :(得分:1)
您有以下错误......
$('.full_tank')
正在寻找名为class
的 full_tank
,在这种情况下,没有此类class
。您需要使用name
选择 $('input[name="full_tank"]')
属性。为您的其他选择器执行相同的操作。
.val(':checked')
正在寻找:checked
的值,而且没有这样的事情。要确定是否 IS ,请使用jQuery .is()
。
.val() == ''
工作正常,但可以替换为.is(':blank')
,由于插件的自定义:blank
选择器,它也会与填充空白字符的字段匹配。
请查看:jQuery Selector Reference和jQuery Validate Selector Reference。
由于条件函数只是根据布尔值的结果返回一个布尔值,你可以通过在条件前放一个return
来缩短它。
rules: {
num_gals: {
required: function() {
return ! ($('input[name="full_tank"]').is(':checked'));
}
},
full_tank: {
required: function() {
return ($('input[name="num_gals"]').is(':blank'));
}
}
},
BTW:您的代码是JavaScript,因此it's best to avoid Allman code style, typically used with PHP, because JavaScript automatically inserts semicolons。
答案 1 :(得分:0)
只需替换此行
if ($('.full_tank').is(':checked')) {