2010-11-19 22 views
11

Necesito ayuda para crear un método personalizado para validar la suma de múltiples valores de entrada de texto.jquery validate: suma de múltiples valores de entrada

En forma tengo número variable de entradas de texto y al presentar necesito para validar que la suma de los valores de entrada en el mismo grupo es exactamente 100.

ejemplo (segundo grupo no debe validar):

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

Respuesta

16

lo tengo trabajando de esta manera:

personalizada regla de validación:

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

Y el uso de la siguiente manera:

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

}else{ 

} 

o en forma de plug-in

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

'val()' devuelve una cadena y no podría hacer exactamente lo que se espera que lo haga. Use 'parseFloat ($ (this) .val())' o 'Number ($ (this) .val())' para obtener un valor numérico (o un 'NaN' que puede verificar para valores inválidos). –

+1

¿Hay alguna manera de implementarlo en el complemento jquery-validation? – Vertigo