如何使用Javascript或jQuery对单选按钮值进行求和?

时间:2012-03-20 22:53:29

标签: javascript jquery events radio-button sum

假设我有3个单选按钮,每个单选按钮的值不同,还有一个文本框,然后显示每个单选按钮的总和。每次单击单选按钮时,我应该使用哪个Jquery或Javascript事件来汇总值?

最初,我的单选按钮旁边有一个文本框,用于显示所选单选按钮的值,但是我无法触发事件来总结自身发生变化的文本框中的值(因为keyup或keydown不会在这种情况下工作)。

为了更好地解释我想要实现的目标,下面是我工作的一个示例。任何帮助和提示将不胜感激。提前谢谢。

P.S。:如果问题不是很多,你还可以添加一个工作样本,以便我可以使用工作样本。感谢。

 Yes
<input type="radio" name="radio1" value="10" />
No
<input type="radio" name="radio1" value="0" /><br />
Yes
<input type="radio" name="radio2" value="10" />
No
<input type="radio" name="radio2" value="0" /><br />
Yes
<input type="radio" name="radio3" value="10" />
No
<input type="radio" name="radio3" value="0" /><br />
Total Score:
<input type="text" name="sum" />

3 个答案:

答案 0 :(得分:9)

我会这样做:

function calcscore(){
    var score = 0;
    $(".calc:checked").each(function(){
        score+=parseInt($(this).val(),10);
    });
    $("input[name=sum]").val(score)
}
$().ready(function(){
    $(".calc").change(function(){
        calcscore()
    });
});

请参阅此js fiddle example

html结构与你的相同,只有我添加了一个类calc,这样我才能更容易地选择它们。

答案 1 :(得分:1)

我建议使用纯 JavaScript/EcmaScript

document.addEventListener( 'DOMContentLoaded', event => {
    const text = document.getElementByTagName('sum')
    const radioElems = document.querySelectorAll('input[type="radio"]')
    radioElems.forEach((radioElem) => { radioElem.addEventListener('change', () => {
      count()
    }) })
    const count = () => {
      let score = 0
      document.querySelectorAll('input[type="radio"]:checked').forEach(radioChecked => {
        score += parseInt(radioChecked.value, 10)
        text.innerHTML = score
      })
    }
  })

答案 2 :(得分:0)

假设单选按钮位于id ='myForm'的表单内,textbox的id ='totalScore'则为:

var sum = 0;
$("#myForm").find("input[type='radio']:checked").each(function (i, e){sum+=$(e).val();});
$("#totalScore").val(sum);