如何计算JQuery中某些输入类型的总和

时间:2016-06-24 12:20:59

标签: javascript jquery

我有一个动态创建下拉列表的表单。就像

1. Main question 
    a . Sub Question dropDown
    b . Sub Question dropDown
    c . Sub Question dropDown
2. Main question 
    a . Sub Question dropDown
    b . Sub Question dropDown
    c . Sub Question dropDown

每个Drop down的类名都是这样的

<select class="dropdown dec_MT004" name="MT004_percentage[]" data-placeholder="weightage">
  <option value="">Select</option>
  <option value="10">10</option>
  <option value="20">20</option>
  <option value="30">30</option>
  <option value="40">40</option>
  <option value="50">50</option>
  <option value="60">60</option>
  <option value="70">70</option>
  <option value="80">80</option>
  <option value="90">90</option>
  <option value="100">100</option>
</select>

主要问题的ID是'MT001'

然后类名是

dec_MT001
dec_MT002

我必须检查每个主要问题的总下降量是否为100

我正在尝试这样做

var validateWeightage = function(_classname) {

  //alert(_classname);

  var value = [];
  var sum = 0;

  $('.' + _classname).each(function() {

    if ($(this).val() != '' || $(this).val() != null)
      sum += parseInt($(this).val());

  });

  if (isNaN(sum) || sum <= 100) {
    //alert(sum);
    $('.' + _classname).addClass('label-danger');
  } else {
    $('.' + _classname).removeClass('label-danger').addClass('label-info');
  }

}

setInterval(function() {
  validateWeightage("dec_MT004");
}, 5000);

但这不起作用,

即使子总数为'100'

,它也会添加CLass'label-danger'

任何帮助将不胜感激

更新

这是支持

的小提琴

JSFIDDLE

1 个答案:

答案 0 :(得分:0)

我认为你改变了这个领域:

if(isNaN(sum) || sum < 100){

或者您定义了全局变量。

var value = [];
var sum = 0;

var validateWeightage = function(_classname) {

  //alert(_classname);



  $('.' + _classname).each(function() {

    if ($(this).val() != '' || $(this).val() != null)
      sum += parseInt($(this).val());

  });

  if (isNaN(sum) || sum <= 100) {
    //alert(sum);
    $('.' + _classname).addClass('label-danger');
  } else {
    $('.' + _classname).removeClass('label-danger').addClass('label-info');
  }

}

setInterval(function() {
  validateWeightage("dec_MT004");
}, 5000);