javascript - Vue.js : add data when checked box

标签 javascript vue.js vuejs2

在下面的 Vue JS 代码中,如果选中该框,我想对输入数据求和。我为每个输入设置了一个 v-model 以将其发布到 API,但我无法弄清楚如果选中了 boxed 则对输入数据求和的方法。 有没有办法在 Vue Js 中做到这一点?

提前致谢

export default {
  data() {
    return {
      checkPayment: true,
      checkPayment2: true,
    }
  }
<div class="inst-input justify-content-center mt-3">
  <input v-model="instFour" class="paid-input" placeholder=" amount-1 " required />
  <b-form-checkbox id="checkboxs-2" v-model="checkPayment3" name="checkbox-2" unchecked-value="false">
   checked
  </b-form-checkbox>
</div>

<div class="inst-input justify-content-center mt-3">
  <input v-model="instFive" class="paid-input" placeholder=" amount-2" required />
  <b-form-checkbox id="checkbox" v-model="checkPayment4" name="checkbox-1" unchecked-value="false">
   checked
  </b-form-checkbox>
</div>

最佳答案

您可以使compated属性返回总和:

new Vue({
  el: "#demo",
  data() {
    return {
      groups: [{id: 1, input: 0, check: false}, {id: 2, input: 0, check: false}, 
               {id: 3, input: 0, check: false}, {id: 4, input: 0, check: false}, 
               {id: 5, input: 0, check: false}],
    }
  },
  computed: {
    getSum() {
      return this.calcSum()
    }
  },
  methods: {
    calcSum() {
      const checked = this.groups.filter(g => g.check === true)
      if (checked.length) {
        return checked
          .map(inp => Number(inp.input))
          .reduce((acc, cur) => {
            return acc + cur
          })
      } else {
        return 0
      }
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css" />
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.min.css" />
<script src="//unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.min.js"></script>

<div id="demo">
  <div class="inst-input justify-content-center mt-3" v-for="group in groups" :key="group.id">
    <input v-model="group.input" class="paid-input" type="number" placeholder=" amount " required />
    <b-form-checkbox id="checkboxs" v-model="group.check" name="checkbox" unchecked-value="false" @change="calcSum">
     checked
    </b-form-checkbox>
  </div>
  <h3>Sum: {{ getSum }}</h3>
</div>

关于javascript - Vue.js : add data when checked box,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70745940/

相关文章:

javascript - 在 Vue.js 中调试

javascript - 为什么我的循环不在我的页面上显示我的 JSON/API 数据?

vue.js - 在 vue-router 中动态设置基础

javascript - 如何在 Javascript 中编写阻塞同步方法?

javascript - Vuetify 使所有按钮变圆

javascript - 相当于 Vue.js 中的 React 容器和展示组件

javascript - 如何使用 Vue.js 对表单字段值求和?

vuejs2 - 如何使用 Vuetifyjs 水平对齐表单组件

javascript - Mongoose 的 promise 和 bluebird

javascript - 如何让下拉菜单在点击时打开/关闭而不是悬停?