vuejs 如何获取页面中所有被选中的radio

发布于 2022-09-06 08:23:23 字数 1563 浏览 16 评论 0

  1. 有个打分页,至少10道题目,每道题目下面有4个选项,每个选项分值不同
  2. 在每个radio input的属性上都绑定了该选项的分值和它所属的题号
  3. 打算一次性获取页面上所有的被选中的input,然后根据其属性值输出题号id和选项分值

求问,vuejs中如何一次性获取所有的被选中的input 单选框

    <ol  type="a">
                <li v-for="(item, index, indexName, subject) in evaSubject" :key="item.id">
                  <span>{{item.subject}}</span><br><span :class="hiddenNum">{{item.id}}</span>
                  <input class="sub-radio" type="radio" :name="item.subject" :data-id="item.id" :data-score="item.weightA"><label>{{item.A}}</label>
                  <span>({{item.weightA}})</span>
                  <input class="sub-radio" type="radio" :name="item.subject" :data-id="item.id" :data-score="item.weightB"><label>{{item.B}}</label>
                  <span>({{item.weightB}})</span>
                  <input class="sub-radio" type="radio" :name="item.subject" :data-id="item.id" :data-score="item.weightC"><label>{{item.C}}</label>
                  <span>({{item.weightC}})</span>
                  <input class="sub-radio" type="radio" :name="item.subject" :data-id="item.id" :data-score="item.weightD"><label>{{item.D}}</label>
                  <span>({{item.weightD}})</span>

                </li>
              </ol>

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

柒七 2022-09-13 08:23:23

给每个input添加change事件,将id和分值传递过去,给按钮添加submit事件,新增一个results数组作为记录答案的数组

模板

<ol  type="a">
    <li v-for="(item, index) in evaSubject" :key="item.id">
        <span>{{item.subject}}</span><br><span>{{item.id}}</span>
        <input class="sub-radio" type="radio" :name="item.subject" :data-id="item.id" :data-score="item.weightA" @change="changeResult(item.id,item.weightA)"><label>{{item.A}}</label>
        <span>({{item.weightA}})</span>
        <input class="sub-radio" type="radio" :name="item.subject" :data-id="item.id" :data-score="item.weightB" @change="changeResult(item.id,item.weightB)"><label>{{item.B}}</label>
        <span>({{item.weightB}})</span>
        <input class="sub-radio" type="radio" :name="item.subject" :data-id="item.id" :data-score="item.weightC" @change="changeResult(item.id,item.weightC)"><label>{{item.C}}</label>
        <span>({{item.weightC}})</span>
        <input class="sub-radio" type="radio" :name="item.subject" :data-id="item.id" :data-score="item.weightD" @change="changeResult(item.id,item.weightD)"><label>{{item.D}}</label>
       <span>({{item.weightD}})</span>
    </li>
</ol>
<button @click="submit">提交</button>

数据

data:{
    results:[]
}

方法

methods: {
      submit:function() {
          console.log(this.results)
      },
      changeResult:function(id,score){
          var temp = {id:id,score:score};
          this.results.push(temp);
      }
}
自演自醉 2022-09-13 08:23:23

直接v-model="result[index]"绑定每组radio不行吗?

与酒说心事 2022-09-13 08:23:23

这个你可以设置自己的数据格式, 比如:

data: {
    question0: false,
    question1: false,
    question2: false,
    question3: false
}
提交答案的时候去遍历这个对象就好了, question 也可以是 `[]`, `{}`, 取决于你
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文