jquery-validate - addMethod - 如何应用自定义规则引用两个文本框?

时间:2011-11-24 23:43:05

标签: jquery jquery-validate

我正在使用jQuery validation plugin,我希望使用自定义方法,在决定情况是否有效时,将两个输入两个不同文本框的值考虑在内。

我知道add method,我找到了一个例子......

jQuery.validator.addMethod("math", function(value, element, params) { 
 return this.optional(element) || value == params[0] + params[1]; 
}, jQuery.format("Please enter the correct value for {0} + {1}"));

...引用了两个元素,但我不清楚如何编写一个可以使用这种方法的规则?

为了更容易讨论想象我想要使用这个示例方法,我有一个看起来像这样的表单..

<form id="TOTALSFORM" name="TOTALSFORM">
    <label for="LHSOPERAND">Input 1</label>
    <br />
    <input type="text" name="LHSOPERAND" id="LHSOPERAND" class="required" />
    <br />
    <label for="RHSOPERAND">End</label>
    <br />
    <input type="text" name="RHSOPERAND" id="RHSOPERAND" class="required" />
    <label for="TOTAL">End</label>
    <br />
    <input type="text" name="TOTAL" id="TOTAL" class="required" />
</form>

我有其他规则我这样申请:

$("#OPTREASON").rules("add", {
    required: true,
    min: 0,
    messages: {
        required: "Required input",
        min: "Please select a Reason"
    }
});

如何执行类似的操作以应用显示的示例自定义方法,以便将'TOTAL'检查为'LHSOPERAND'和'RHSOPERAND'的总和。

1 个答案:

答案 0 :(得分:36)

尝试以下方法:

创建规则

jQuery.validator.addMethod("checkTotal",function(value) {
    total = parseFloat($('#LHSOPERAND').val()) + parseFloat($('#RHSOPERAND').val());
    return total == parseFloat($('#TOTAL').val());
}, "Amounts do not add up!");

jQuery.validator.classRuleSettings.checkTotal = { checkTotal: true };

<强>输入

<input type="text" name="TOTAL" id="TOTAL" class="required checkTotal" />

初始验证

$(document).ready(function() {
    $("#TOTALSFORM").validate();
});

在这里小提琴:http://jsfiddle.net/wTMv3/