Задать вопрос
Ответы пользователя по тегу JavaScript
  • Как сделать счетчик checkbox, vue3?

    @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` перед пересчетом, чтобы учесть случаи, когда пользователь сначала выбирает чекбокс, а затем снимает его. Это обеспечивает точное подсчетное значение.
    Ответ написан
    Комментировать
  • Как отловить отправку формы не только кнопкой?

    @artem111999000
    SEO
    Если вы хотите отловить отправку формы не только по нажатию кнопки, но и при нажатии клавиши Enter, вы можете использовать событие "submit" формы и проверить код клавиши события для определения, была ли нажата клавиша Enter. Вот пример кода на ванильном JavaScript:

    ```javascript
    document.addEventListener('DOMContentLoaded', function() {
    var form = document.getElementById('myForm'); // Замените 'myForm' на ID вашей формы

    form.addEventListener('submit', function(event) {
    event.preventDefault(); // Предотвращаем отправку формы по умолчанию

    // Выполняйте здесь вашу обработку данных формы перед отправкой

    // Пример обработки данных:
    var formData = new FormData(form);
    var data = {};

    for (var pair of formData.entries()) {
    data[pair[0]] = pair[1];
    }

    console.log(data); // Выводим данные формы в консоль (пример)

    // Отправляем данные на сервер (AJAX-запрос или другой метод)

    // Очищаем форму
    form.reset();
    });

    form.addEventListener('keydown', function(event) {
    if (event.key === 'Enter') {
    form.dispatchEvent(new Event('submit')); // Имитируем событие submit при нажатии клавиши Enter
    }
    });
    });
    ```

    В этом примере мы добавляем обработчик события "submit" на форму и предотвращаем ее отправку по умолчанию с помощью `event.preventDefault()`. Затем вы можете выполнять вашу обработку данных формы и отправлять данные на сервер. Также мы добавляем обработчик события "keydown" на форму, и если нажата клавиша Enter, мы вызываем событие "submit" формы.

    Примечание: Замените `'myForm'` в коде на ID вашей формы, которую вы хотите отслеживать.
    Ответ написан
    Комментировать
  • Как увеличить высоту блока в Grid только на одной линии если один элемент больше либо равен другим?

    @artem111999000
    SEO
    В CSS Grid можно увеличить высоту блока только на одной линии, если один элемент больше или равен другим, используя свойство `grid-row-end`. Вы можете задать значение `span` для свойства `grid-row-end`, чтобы указать, сколько строк должен занимать элемент.

    Вот пример:

    HTML:
    ```html

    Элемент 1
    Элемент 2
    Элемент 3

    ```

    CSS:
    ```css
    .grid-container {
    display: grid;
    grid-template-columns: 1fr; /* Одинаковая ширина для всех элементов */
    grid-auto-rows: 50px; /* Высота строк */
    grid-gap: 10px; /* Промежуток между элементами */
    }

    .item {
    background-color: #ccc;
    padding: 10px;
    }

    .item:nth-child(2) {
    grid-row-end: span 2; /* Увеличиваем высоту на 2 строки */
    }
    ```

    В этом примере, второй элемент `.item:nth-child(2)` будет занимать две строки вместо одной, если он больше или равен другим элементам. Вы можете изменить значение `span` на количество строк, которое вам нужно.

    Обратите внимание, что это пример CSS Grid с фиксированной высотой строк. Если вам нужно динамически изменять высоту строк в зависимости от содержимого, вам может потребоваться использовать JavaScript или другие CSS-свойства, такие как `grid-template-rows: auto` или `grid-template-rows: minmax(min-content, max-content)`.
    Ответ написан
    Комментировать