代码之家  ›  专栏  ›  技术社区  ›  Jonathan Sampson

jquery validate:多个输入值之和

  •  12
  • Jonathan Sampson  · 技术社区  · 14 年前

    我需要帮助来创建自定义方法来验证多个文本输入值的和。

    在表单中,我有可变数量的文本输入,提交时,我需要验证同一组中的输入值之和是否正好是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 回复  |  直到 14 年前
        1
  •  17
  •   Jonathan Sampson    14 年前

    我是这样做的:

    自定义验证规则:

    $.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});
    
        2
  •  6
  •   rterrani    14 年前
    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;
    }