Jquery-validate - addMethod - как применить настраиваемое правило, ссылающееся на два текстовых поля?
Я использую плагин проверки 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
Попробуйте следующее:
Создать правило
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/