0

我目前有一个 JS 函数,它根据选中的单选按钮的值计算分数。我希望我的函数在以后取消选中这些选中的单选按钮时更新分数字段。

HTML:

 <input class="calc_1" name="1" id="sec_125" type="radio" value="4">
 <input class="calc_2" name="1" id="sec_126" type="radio" value="1">
 <input class="calc_3" name="1" id="sec_127" type="radio" value="2">
 <input class="calc_4" name="1" id="sec_128" type="radio" value="3">
 <input class="calc_1" name="2" id="sec_129" type="radio" value="4">
 <input class="calc_2" name="2" id="sec_130" type="radio" value="1">
 <input class="calc_3" name="2" id="sec_131" type="radio" value="2">
 <input class="calc_4" name="2" id="sec_132" type="radio" value="3">
 <input readonly name="score_1" id="score_1" type="text" value="">
 <input readonly name="score_2" id="score_2" type="text" value="">

JS:

function getTotalScore(sec){
   var total = 0; 
   jQuery(".calc_"+sec+":checked").each(function() {
    total += parseInt(jQuery(this).val(),10);
    count++;
});

 jQuery("#score_"+sec).val(total);

}

jQuery(document).ready(function(){
    jQuery(".calc_1").change(function() {
      getTotalScore("1")
    });
   jQuery(".calc_2").change(function() {
    getTotalScore("2")
   });
});

目前,当分别选中“calc_1”和“calc_2”类中的单选按钮时,我的代码会更新 score_1 和 score_2 字段,但当用户从同一输入组中选择另一个单选按钮时不会更改这些值。

例如,如果用户先选择 sec_125 和 sec_130,则 score_1 应为 4, score_2 应为 1。如果用户稍后决定选择 sec_126,则 score_1 在实际应为 0 时仍保持为 4。

我如何编写一个 JS 函数,在以前选中的单选按钮现在取消选中后立即更新分数字段?

谢谢!

4

3 回答 3

0

每次更改后重新计算所有内容:

jQuery(document).ready(function(){
    jQuery(".calc_1, .calc_2").change(function() {
      calculateScore("1")
      calculateScore("2")
    });
});
于 2012-10-03T22:34:14.173 回答
0

您应该在所有单选按钮上绑定change事件

jQuery(document).ready(function(){
   jQuery(".calc_1, .calc_2, .calc_3, .calc_4").change(function() {
     calculateScore("1");
     calculateScore("2");
   });
});
于 2012-10-03T22:37:38.777 回答
0

尝试这个

$(document).ready(function(){
    $(".calc_1, .calc_2").on('click',function() {
      if( ! $(this).is(':checked'){ // Condition When Unchecked
          calculateScore("1");
          calculateScore("2");
      }
    });
});
于 2012-10-03T22:39:24.113 回答