2014-09-03 21 views
0

我想通过表单字段循环,并添加每个输入的值,并显示另一个div中的总数。只有当我填写所有表单域时,它才适用于我。如果我只在我的2个表单域中有值,我该如何使它工作?jquery循环只通过那些在其中的值的输入

HTML:

<ul class="nav tabs " id="calculate"> 
     <li class="active"><input type="text" class="col-sm-3 pull-right" id="right-input"></li> 
     <li><a href="#tab2" data-toggle="tab"> <input type="text" class="col-sm-3 pull-right" id="right-input"></a></li> 
     <li><a href="#tab3" data-toggle="tab"><input type="text" class="col-sm-3 pull-right" id="right-input"></a></li> 
     <li><a href="#tab4" data-toggle="tab"><input type="text" class="col-sm-3 pull-right" id="right-input"></a></li> 
     <li><a href="#tab5" data-toggle="tab"><input type="text" class="col-sm-3 pull-right" id="right-input"></a></li> 
     <li><a href="#tab6" data-toggle="tab"><input type="text" class="col-sm-3 pull-right" id="right-input"></a></li> 
     <li><a href="#tab7" data-toggle="tab"><input type="text" class="col-sm-3 pull-right" id="right-input"></a></li> 
     <li><a href="#tab8" data-toggle="tab"><input type="text" class="col-sm-3 pull-right" id="right-input"></a></li> 
     <li><a href="#tab9" data-toggle="tab"><input type="text" class="col-sm-3 pull-right" id="right-input"></a></li> 
     <li><a href="#tab10" data-toggle="tab"><input type="text" class="col-sm-3 pull-right" id="right-input"></a></li> 
</ul> 

JS:

$(document).ready(function() 
{ 
    $("input").keyup(function() 
    { 
     var $inputs = jQuery('#calculate :input'); 
     var values = {}; 
     var total = 0; 
     $inputs.each(function() 
     { 
      if(values[this.name] !== "") 
      { 
       total = parseFloat(total) + parseFloat(values[this.name]); 
      } 
      if(total) 
     }); 
     console.log(total); 
    }); 
}); 

回答

0

你要做的变化不大,你each()循环是这样的:

$inputs.each(function() { 
     if ($(this).val() !== "") { 
      total = parseFloat(total) + parseFloat($(this).val()); 
     } 
    }); 

FIDDLE DEMO

+0

谢谢。这正是我需要:) – baig772 2014-09-03 16:49:50

+0

欢迎Baig bhai ... :)很高兴它帮助 – 2014-09-03 16:54:24

0

可以循环前过滤输入,这会给你投入其中值不为空。

var $inputs = jQuery('#calculate :input').filter(function(){return this.value !==''}); 
0

你需要改变你怎么加你的价值观,试试这个:

var value = !isNaN(Number(values[this.name])) ? parseFloat(values[this.name]) : 0; 
total += value;