0

截屏

我有上面的字段,我想要求他们为至少一个输入大于 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;
    }
}

任何帮助,将不胜感激。

4

1 回答 1

0

您不能在rule这样的内部使用函数。 required:通常只接受trueor false。但是,您也可以使用dependstrue/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


最好的解决方案是使用addMethod为这两个字段创建自己的规则。使用“小于或等于”运算符 ( <=) 排除负数。

$.validator.addMethod("myMethod", function (value, element) {
    if (($("#individual").val() <= 0) && ($("#tables").val() <= 0)) {
        return false;
    } else {
        return true;
    }
}, "Please enter at least one field");

工作演示:http: //jsfiddle.net/v4UGM/

于 2013-01-24T21:55:26.453 回答