javascript - 添加单选按钮的值

标签 javascript jquery html

我正在整理一份调查问卷,其中每个问题都有 4 个单选按钮选项。单选按钮附加了一个值,该值按照我需要的方式进行加权。我有一个 javascript 函数,当我选择单选按钮时,它会更改值,但是,即使首次加载页面,由于某种原因,值也会从 75 开始。我需要第一个问题 1A 的值为 0、3 或 5,然后一旦回答了问题 1B,该值就会更改为 0、3、5、6、8 或 10。换句话说,新选择的值radio值从1A开始加到radio值上。以下是我表格中的前几个问题。

<div class="panel-group" id="accordion1" role="tablist" aria-multiselectable="true">
    <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingOneA">
            <h4 class="panel-title">
            <a role="button" data-toggle="collapse" data-parent="#accordion1" href="#collapseOneA" aria-expanded="true" aria-controls="collapseOneA">
               <span class="letter">a</span> Question 1A
            </a>
            </h4>
        </div>
        <div id="collapseOneA" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOneA">
            <div class="panel-body">
                <label>
                    <input class="calc" type="radio" name="optionsRadios1" id="optionsRadios11A" value="5" checked>
                    YES
                </label>
                <label>
                    <input class="calc" type="radio" name="optionsRadios1" id="optionsRadios21A" value="0">
                    NO
                </label>
                <label>
                    <input class="calc" type="radio" name="optionsRadios1" id="optionsRadios31A" value="3">
                    PARTIAL
                </label>
                <label>
                    <input class="calc" type="radio" name="optionsRadios1" id="optionsRadios41A" value="0">
                    UNSURE
                </label>
              </div>
            </div>
          </div>
          <div class="panel panel-default">
            <div class="panel-heading" role="tab" id="headingTwoA">
              <h4 class="panel-title">
                <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion1" href="#collapseTwoA" aria-expanded="false" aria-controls="collapseTwoA">
                  <span class="letter">b</span> Question 1B
                </a>
              </h4>
            </div>
            <div id="collapseTwoA" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwoA">
              <div class="panel-body">
                  <label>
                    <input class="calc" type="radio" name="optionsRadios2" id="optionsRadios11B" value="5" checked>
                    YES
                  </label>
                  <label>
                    <input class="calc" type="radio" name="optionsRadios2" id="optionsRadios21B" value="0">
                    NO
                  </label>
                  <label>
                    <input class="calc" type="radio" name="optionsRadios2" id="optionsRadios31B" value="3">
                    PARTIAL
                  </label>
                  <label>
                    <input class="calc" type="radio" name="optionsRadios2" id="optionsRadios41B" value="0">
                    UNSURE
                  </label>
              </div>
          </div>
      </div>
      <div class="panel panel-default">
          <div class="panel-heading" role="tab" id="headingThreeA">
              <h4 class="panel-title">
                  <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion1" href="#collapseThreeA" aria-expanded="false" aria-controls="collapseThreeA">
                  <span class="letter">c</span> Question1C
                  </a>
              </h4>
          </div>
          <div id="collapseThreeA" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingThreeA">
              <div class="panel-body">
                  <label>
                      <input class="calc" type="radio" name="optionsRadios3" id="optionsRadios11C" value="5" checked>
                    YES
                  </label>
                  <label>
                      <input class="calc" type="radio" name="optionsRadios3" id="optionsRadios21C" value="0">
                    NO
                  </label>
                  <label>
                      <input class="calc" type="radio" name="optionsRadios3" id="optionsRadios31C" value="3">
                    PARTIAL
                  </label>
                  <label>
                      <input class="calc" type="radio" name="optionsRadios3" id="optionsRadios41C" value="0">
                    UNSURE
                  </label>
              </div>
          </div>
      </div>
      <div class="panel panel-default">
          <div class="panel-heading" role="tab" id="headingFourA">
              <h4 class="panel-title">
                  <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion1" href="#collapseFourA" aria-expanded="false" aria-controls="collapseFourA">
                  <span class="letter">d</span> Question 1D
                  </a>
              </h4>
          </div>
          <div id="collapseFourA" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingFourA">
              <div class="panel-body">
                  <label>
                      <input class="calc" type="radio" name="optionsRadios4" id="optionsRadios11D" value="5" checked>
                    YES
                  </label>
                  <label>
                      <input class="calc" type="radio" name="optionsRadios4" id="optionsRadios21D" value="0">
                    NO
                  </label>
                  <label>
                      <input class="calc" type="radio" name="optionsRadios4" id="optionsRadios31D" value="3">
                    PARTIAL
                  </label>
                  <label>
                      <input class="calc" type="radio" name="optionsRadios4" id="optionsRadios41D" value="0">
                    UNSURE
                  </label>
              </div>
          </div>
      </div>
      <div class="panel panel-default">
          <div class="panel-heading" role="tab" id="headingFiveA">
              <h4 class="panel-title">
                  <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion1" href="#collapseFiveA" aria-expanded="false" aria-controls="collapseFiveA">
                  <span class="letter">e</span> Question 1E
                  </a>
              </h4>
          </div>
          <div id="collapseFiveA" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingFiveA">
              <div class="panel-body">
                  <label>
                      <input class="calc" type="radio" name="optionsRadios5" id="optionsRadios11E" value="5" checked>
                    YES
                  </label>
                  <label>
                      <input class="calc" type="radio" name="optionsRadios5" id="optionsRadios21E" value="0">
                    NO
                  </label>
                  <label>
                      <input class="calc" type="radio" name="optionsRadios5" id="optionsRadios31E" value="3">
                    PARTIAL
                  </label>
                  <label>
                      <input class="calc" type="radio" name="optionsRadios5" id="optionsRadios41E" value="0">
                    UNSURE
                  </label>
              </div>
          </div>
      </div>
  </div>

这是我的 JavaScript 函数:

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()
    });
});

我已将代码粘贴到 JSFiddle 中:

https://jsfiddle.net/Dhaderlie/bkdqaxnL/

如果您测试该表单,您会看到我得到的奇怪值。

最佳答案

您的代码是正确的。

文档就绪后,您将获得所有检查值的总和。考虑到加载页面时,您总是检查所有单选按钮,您只需获取所有检查值的总和。

您只需从单选按钮中删除 checked 属性,然后在回答问题时即可正确更新结果。

在下面的 jsfiddle 中,我刚刚更改了您的示例,从第二个问题中删除了 checked 属性,这次您的输出从 70 开始(因为如果选中,第二个答案会多获得 5 分)

https://jsfiddle.net/bkdqaxnL/2/

我希望这是有道理的

关于javascript - 添加单选按钮的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44687198/

相关文章:

javascript - 如何扩展剑道编辑器小部件?

javascript - Bootstrap Modal 无法刷新数据

javascript - 如何创建包含 jquery 的脚本元素

jquery - Menucool jQuery Slider 的箭头按钮无法正常工作

java - 如何使用 th :classapend if a form error on another field exists?

javascript - 将 Node.js 文件转换为 ES5

javascript - 创建一个可嵌入的 JavaScript 小部件

javascript - 如何使用<td>值进行jquery计算代替&lt;input type ="number">

html - 更改电话号码小部件的颜色(Wordpress)

HTML 表格 - 如何正确使用 rowspan?