jquery-validate - addMethod - как применить пользовательское правило, ссылающееся на два текстовых поля? - PullRequest
17 голосов
/ 25 ноября 2011

Я использую плагин проверки jQuery , и я хочу использовать пользовательский метод, который учитывает два значения, введенные в два разных текстовых поля, при принятии решения, если ситуация действительна.

Я знаю о метод добавления , и я нашел пример ...

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 Ответ

36 голосов
/ 25 ноября 2011

Попробуйте следующее:

Создать правило

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

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

Начальная проверка

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

Скрипка здесь: http://jsfiddle.net/wTMv3/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...