Задать вопрос
@Kist9

Как сделать счетчик checkbox, vue3?

Всем привет , помогите пожалуйста сделать счетчик для чекбоксов , который будет пересчитывать значение при любых изменениях чекбоксов.
<template>
    <div class="divRadio">
        <div class="divus" style="margin-top: 0px;">
            <input type="checkbox" id="name1" class="checkus" @click="schetRadio"/>
            <label for="name1" class="labelus">Василенко Пётр Владимирович</label>
        </div>
        <div class="divus">
            <input type="checkbox" id="name2" class="checkus" v-on:change="schetRadio"/>
            <label for="name2" class="labelus">Ерёменко Владислав Игоревич</label>
        </div>
        <div class="divus">
            <input type="checkbox" id="name3" class="checkus" v-on:change="schetRadio" />
            <label for="name3" class="labelus">Антонова Елена Сергеевна</label>
        </div>
    </div>
</template>

<script>
    export default {
        data() {
            return {
                name: 'radio-btn',
                schetchik: {
                    schetchik: 0,
                }
            }
        },
        methods: {
            schetRadio() {
                this.schetchik =+ 1;
                this.$emit('schetchik' , this.schetchik)
            }
        }
    }
</script>
  • Вопрос задан
  • 276 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
gogowq
@gogowq
Ozh domosh acha ozh
<template>
  <div class="divRadio">
    <div class="divus" style="margin-top: 0px;">
      <input type="checkbox" id="name1" class="checkus" @change="schetRadio" />
      <label for="name1" class="labelus">Василенко Пётр Владимирович</label>
    </div>
    <div class="divus">
      <input type="checkbox" id="name2" class="checkus" @change="schetRadio" />
      <label for="name2" class="labelus">Ерёменко Владислав Игоревич</label>
    </div>
    <div class="divus">
      <input type="checkbox" id="name3" class="checkus" @change="schetRadio" />
      <label for="name3" class="labelus">Антонова Елена Сергеевна</label>
    </div>
  </div>
</template>


export default {
  data() {
    return {
      schetchik: 0,
    };
  },
  methods: {
    schetRadio() {
      this.schetchik = Array.from(document.querySelectorAll('.checkus'))
        .filter((checkbox) => checkbox.checked)
        .length;
      this.$emit('schetchik', this.schetchik);
    },
  },
};
Ответ написан
Комментировать
@artem111999000
SEO
Ваш код содержит несколько ошибок. Вот исправленная версия счетчика для чекбоксов:

```html
<template>
  <div class="divRadio">
    <div class="divus" style="margin-top: 0px;">
      <input type="checkbox" id="name1" class="checkus" v-model="isChecked1" @change="schetRadio" />
      <label for="name1" class="labelus">Василенко Пётр Владимирович</label>
    </div>
    <div class="divus">
      <input type="checkbox" id="name2" class="checkus" v-model="isChecked2" @change="schetRadio" />
      <label for="name2" class="labelus">Ерёменко Владислав Игоревич</label>
    </div>
    <div class="divus">
      <input type="checkbox" id="name3" class="checkus" v-model="isChecked3" @change="schetRadio" />
      <label for="name3" class="labelus">Антонова Елена Сергеевна</label>
    </div>
  </div>
</template>


<script>
export default {
  data() {
    return {
      isChecked1: false,
      isChecked2: false,
      isChecked3: false,
      schetchik: 0,
    };
  },
  methods: {
    schetRadio() {
      this.schetchik = 0;
      if (this.isChecked1) {
        this.schetchik++;
      }
      if (this.isChecked2) {
        this.schetchik++;
      }
      if (this.isChecked3) {
        this.schetchik++;
      }
      this.$emit('schetchik', this.schetchik);
    },
  },
};
</script>

```

В этой версии я использовал директиву `v-model` для связывания значения каждого чекбокса с соответствующим свойством `isChecked1`, `isChecked2` и `isChecked3`. При изменении чекбоксов вызывается метод `schetRadio`, который пересчитывает значение `schetchik` в зависимости от состояния каждого чекбокса. Затем он эмитирует событие `schetchik` с обновленным значением.

Обратите внимание, что я также добавил обнуление `schetchik` перед пересчетом, чтобы учесть случаи, когда пользователь сначала выбирает чекбокс, а затем снимает его. Это обеспечивает точное подсчетное значение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽