2010-11-19 26 views
11

Birden fazla metin giriş değeri toplamını doğrulamak için özel yöntem oluşturmak için yardıma ihtiyacım var. formdajquery validate: çoklu giriş değerlerinin toplamı

Metin girişlerinin değişken sayıda ve gönderme zaman 100

örneği (ikinci grup doğrulamak gerekir) aynı grupta giriş değerlerinin toplamı tam olduğunu doğrulamak için gereken:

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

cevap

16

bu şekilde çalışma var:

Özel geçerlilik kuralı: Böyle

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

Ve kullanarak:

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

}else{ 

} 

veya eklenti şeklinde

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

'val()' bir dize döndürür ve tam olarak bunu bekliyoruz ne olmayabilir. Sayısal bir değer elde etmek için parseFloat ($ (this) .val()) 'veya' Number ($ (this) .val()) 'komutunu kullanın (veya geçersiz değerleri kontrol edebileceğiniz bir' NaN '). –

+1

JQuery-Doğrulama eklentisinde uygulamak için bir yolu var mı? – Vertigo