privedentsev
@privedentsev

Почему не обрабатывается первое нажатие на чекбокс?

У меня есть такой код, который при нажатии на чекбокс выводит сообщение в консоль, но это не срабатывает при первом выборе чекбокса, а только при втором и далее. В чем может быть проблема?

$(document).ready(function() {
    
    let checkbox = "";

    function checkbox_add() {
        $("#foundation, #drop").on("change", function() {
          
          var isChecked1 = $("#foundation").prop("checked");
          var isChecked2 = $("#drop").prop("checked");
          
          if (isChecked1 && isChecked2) {
            checkbox = "Выбрано два чекбокса";
            console.log(checkbox);
          } else if (isChecked1) {
            checkbox = "Выбран 1 чекбокс";
            console.log(checkbox);
          } else if (isChecked2) {
            checkbox = "Выбран 2 чекбокс";
            console.log(checkbox);
          } else {
            checkbox = "Ничего не выбрано";
            console.log(checkbox);
          }
        });
    }
    $("#foundation, #drop").on('change', checkbox_add);
  });
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
Так а зачем Вы дважды назначаете обработчик события?

Вы какой код написали, так он и работает. При первом change вы добавляете обработчик change, который уже в свою очередь работает с консолью.

$(document).ready(function() {
    
  let checkbox = "";

  function checkbox_add() {
        var isChecked1 = $("#foundation").prop("checked");
        var isChecked2 = $("#drop").prop("checked");
        
        if (isChecked1 && isChecked2) {
          checkbox = "Выбрано два чекбокса";
        } else if (isChecked1) {
          checkbox = "Выбран 1 чекбокс";
        } else if (isChecked2) {
          checkbox = "Выбран 2 чекбокс";
        } else {
          checkbox = "Ничего не выбрано";
        }

        console.log(checkbox);
  }

  $("#foundation, #drop").on('change', checkbox_add);
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы