2010-11-19 121 views
11

我需要幫助來創建自定義方法來驗證多個文本輸入值的總和。jquery validate:多個輸入值的總和

在形式I具有可變數目的文本輸入和提交時我需要驗證在同一組輸入值的總和恰好是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' /> 

回答

16

我得到它的工作是這樣的:

自定義的驗證規則:

$.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
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; 
} 
+4

'纈氨酸()'返回一個字符串,可能無法準確地做你希望它是什麼。使用'parseFloat($(this).val())'或'Number($(this).val())'來獲得一個數值(或者你可以檢查無效值的'NaN')。 – 2010-11-19 13:41:10

+1

有沒有辦法在jQuery驗證插件中實現它? – Vertigo 2010-11-20 01:24:04