jquery validate: сумма нескольких входных значений - PullRequest
12 голосов
/ 19 ноября 2010

Мне нужна помощь в создании пользовательского метода для проверки суммы нескольких значений ввода текста.

В форме у меня есть переменное количество текстовых входов, и при отправке мне нужно проверить, что сумма входных значений в той же группе точно равна 100.

пример (вторая группа не должна проверяться):

<input type='text' name='g1_number1' class='group1' value='20' />
<input type='text' name='g1_number2' class='group1' value='40' />
<input type='text' name='g1_number3' class='group1' value='40' />

<input type='text' name='g2_number1' class='group2' value='20' />
<input type='text' name='g2_number2' class='group2' value='40' />
<input type='text' name='g2_number3' class='group2' value='10' />

Ответы [ 2 ]

17 голосов
/ 22 ноября 2010

У меня это работает так:

Правило пользовательской проверки:

$.validator.addMethod(
    "sum",
    function (value, element, params) {
        var sumOfVals = 0;
        var parent = $(element).parent(".parentDiv");
        $(parent).find("input").each(function () {
            sumOfVals = sumOfVals + parseInt($(this).val(), 10);
        });
        if (sumOfVals == params) return true;
        return false;
    },
    jQuery.format("Sum must be {0}")
);

И использование так:

$(".group1").rules('add', {sum: 100});
$(".group2").rules('add', {sum: 100});
6 голосов
/ 19 ноября 2010
var sumOfValues=0;
$(".group1").each(function(){
   sumOfValues+=$(this).val();
});
if(sumOfValues==100){

}else{

}

или в виде плагина

$.fn.validateValuesSum=function(value){
   var sumOfValues=0;
   this.each(function(){
     sumOfValues+=$(this).val();
   });
   if(sumOfValues==value){
      return true;
   }
   return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...