2010-11-19 19 views
11

Potrzebuję pomocy w tworzeniu niestandardowej metody sprawdzania poprawności sumy wielu wprowadzanych wartości tekstowych.validate jquery: suma wielu wartości wejściowych

W formularzu mam zmienną liczbę wejść tekstowych i przy składaniu muszę potwierdzić, że suma wartości wejściowych w tej samej grupie jest dokładnie 100.

przykład (druga grupa nie powinna zweryfikować):

<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' /> 

Odpowiedz

16

mam to działa w ten sposób:

niestandardowe reguły poprawności:

$.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}") 
); 

i stosując tak:

$(".group1").rules('add', {sum: 100}); 
$(".group2").rules('add', {sum: 100}); 
6
var sumOfValues=0; 
$(".group1").each(function(){ 
    sumOfValues+=$(this).val(); 
}); 
if(sumOfValues==100){ 

}else{ 

} 

lub w postaci wtyczki

$.fn.validateValuesSum=function(value){ 
    var sumOfValues=0; 
    this.each(function(){ 
    sumOfValues+=$(this).val(); 
    }); 
    if(sumOfValues==value){ 
     return true; 
    } 
    return false; 
} 
+4

'val()' zwraca łańcuch i może nie dokładnie to, co można oczekiwać, że. Użyj 'parseFloat ($ (this) .val())' lub 'Number ($ (this) .val())', aby uzyskać wartość liczbową (lub 'NaN', które można sprawdzić pod kątem nieprawidłowych wartości). –

+1

Czy istnieje sposób wdrożenia go w wtyczce walidacji jquery? – Vertigo

Powiązane problemy