我有上面的字段,我想要求他们为至少一个输入大于0的值,但他们也可以有桌子和座位。
我的HTML:
<div class="form-row reserve">
<input type="text" name="tables" id="tables" value="0"/>
<label for="tables">corporate tables (10 seats) @ $1,950 each and/or</label>
</div>
<div class="form-row reserve">
<input type="text" name="individual" id="individual" value="0"/>
<label for="individual">individual seats @ $225 each</label>
</div>
我已经尝试了这个并且它似乎不起作用:
tables: {
required: function(element){
return $("#individual").val() == 0;
}
},
individual: {
required: function(element){
return $("#tables").val() == 0;
}
}
任何帮助将不胜感激。
答案 0 :(得分:0)
你不能在rule
内使用这样的功能。 required:
通常只接受true
或false
。但是,您也可以使用depends
来指定true/false
rule
内的函数...
rules: {
tables: {
required: {
depends: function(element) {
return $("#individual").val() === 0;
}
}
}
}
但是,使用上述内容,您的表单将始终通过验证,因为这两个字段永远不会为空(它们包含“0”)。因此,始终满足required
规则。请参阅:http://jsfiddle.net/vcnt9/
您无法通过从两个字段中删除0
的默认值来解决此问题,因为永远不会满足depends
函数,并且字段只是保持可选。请参阅:http://jsfiddle.net/vcnt9/1/
或者,您无法通过将depends
应用于min: 1
规则来解决此问题,因为它只允许使用true
或false
的规则。< / p>
对于这两个字段,最佳解决方案是use addMethod
to create your own rule。使用“小于或等于”运算符(<=
)来排除负数。
$.validator.addMethod("myMethod", function (value, element) {
if (($("#individual").val() <= 0) && ($("#tables").val() <= 0)) {
return false;
} else {
return true;
}
}, "Please enter at least one field");