@aspirantes

AddEventlistener и oninput, как выкрутиться, если надо удалить и проверить на наличие одновременно?

В общем, если добавить событие через oninput, то нельзя удалить, а если через addEventListener, то нельзя проверить на наличие простым способом, Что можно предпринять, за исключением способа введения массива событий?

Нужен именно простой способ.

itog_summ = function() {
    var is = document.getElementById('itog_summ');
    if (is.onblur) {
      return;
    } else {
      console.log('Добавили');
      var iprice = is.value * document.getElementById('chisto_summa').textContent;
      itog_price.innerHTML = Math.round(iprice);
      is.addEventListener('input', input_input);
      is.addEventListener('blur', deletef);
      function deletef() {
        is.removeEventListener('input', input_input);
        is.removeEventListener('blur', input_input);
        console.log('Удалили');
      }
      function input_input() {
        iprice = is.value * document.getElementById('chisto_summa').textContent;
        itog_price.innerHTML = Math.round(iprice);
      }
    };
  };
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Слушателей события повесить только один раз, сразу.

Добавить переменную типа let isActive = false; – флаг состояния: активно или нет. Как сейчас у вас наличие/отсутствие слушателя.
По событию blur – ставить в false, input или focus – ставить true.
Не повторять себя – обновление значения innerHTML = Math.round() сейчас дважды. Достаточно явно вызвать функцию.
Лучше не использовать подчёркивание в названиях переменных / функций, это не наш стиль )
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
26 апр. 2024, в 10:01
500 руб./за проект
26 апр. 2024, в 09:18
500 руб./в час
26 апр. 2024, в 06:46
1500 руб./в час