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

如何使用Javascript或jQuery对单选按钮值求和?,javascript,jquery,events,radio-button,sum,Javascript,Jquery,Events,Radio Button,Sum,假设我有3个单选按钮,每个单选按钮有不同的值,还有一个文本框,它将显示选中的每个单选按钮的总和。每次单击单选按钮时,我应该使用哪个Jquery或Javascript事件来汇总值 最初,我的单选按钮旁边有一个文本框,用于显示所选单选按钮的值,但我很难触发一个事件来汇总文本框中自行更改的值(因为keyup或keydown在此给定情况下不起作用) 为了更好地解释我想要实现的目标,下面是我工作中的一个示例。任何帮助和提示都将不胜感激。提前谢谢 p.S.:如果没有太多问题,您是否可以添加一个工作样本,以便

假设我有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" />
是
不

对 不
对 不
总分:
假设单选按钮位于id='myForm'的表单中,且textbox的id='totalScore',则:

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

我会这样做:

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()
    });
});
看到这个了吗


html结构与您的相同,只是我添加了一个类
calc
,以便更容易地选择它们

我建议使用纯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
      })
    }
  })

我喜欢你问题的第一个版本,所以你不需要编辑它。但是如果需要,请不要忘记突出显示代码,这样每个人都可以看到HTML表单元素。(对选定文本使用CTRL+K组合键)。我的答案写在下面的一个例子。希望它有帮助请不要在没有第二个(基本)参数的情况下使用
parseInt
,除非你以后喜欢寻找奇怪的bug。第四行应该是
score+=parseInt($(this).val(),10)@vzwick我改了。我知道可能会有一些奇怪的行为,但如果你没有前导零或类似的东西,大多数情况下不会:)你完全可以相信用户(在本例中是OP)最终会引入前导
0
——墨菲定律;)干杯Sheesh,在这个特殊情况下,您完全正确–我完全忘记了使用IE8尝试您的jsperf(缺少对
:checked
)或check out(使用jQuery的专有
:selected
选择器)来查看我在说什么;)@Davinchie_214在评论中向我提出这个问题是个好主意:)我来看看。