JQuery clearInterval не работает для разных функций

Кто-нибудь знает, почему в моем скрипте не работает clearInterval(interval)? Я не получаю ошибок в журнале консоли. Понятия не имею, почему я не могу остановить интервал.

Спасибо за поддержку.

var interval;

$(document).on('click', '#register-continue', function() {
  $('.modal-register-form :input[type=text], .modal-register-form :input[type=email], .modal-register-form :input[type=password]').each(function() {
    if ($(this).val().length === 0) {
      interval = setInterval(function() {
        console.info('count')
        $('.modal-register-form :input[type=text], .modal-register-form :input[type=email], .modal-register-form :input[type=password]').each(function() {
          if (($(this).val().length != 0) && (!($(this).is(':focus')))) {
            $(this).css({
              border: '1px solid #e5e5e5'
            });
          }

          if (($(this).val().length === 0) && (!($(this).is(':focus')))) {
            $(this).css({
              border: '1px solid #fe0000'
            });
          }
        });
      }, 10);
    }
  });
});

$(document).on('click', '#register-submit', function() {
  clearInterval(interval);
});
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class = "modal-register-form">
  <div class = "user-input">
    <input class = "first-name" type = "text" placeholder = "Vorname">
    <input class = "last-name" type = "text" placeholder = "Nachname">
  </div>
  <button type = "button" id = "register-continue" class = "register">continue</button>
  <button type = "button" id = "register-submit" class = "register">submit</button>
</div>

На самом деле ваша проблема, скорее всего, связана с тем, что у вас есть одна переменная interval, в которой вы пытаетесь сохранить несколько интервалов (ваша логика находится в каждом). Таким образом, вы будете очищать только последний интервал. Вы теряете ссылки на созданные ранее интервалы.

Taplar 26.10.2018 16:15

Вместо проверки DOM каждые 10 мс на наличие новых событий использования ввода: Центр обучения jQuery -> События

Andreas 26.10.2018 16:17

Я согласен с Андреасом. Прикрепите класс required к элементам, требующим ввода. В сценарии найдите все элементы с классом .required и привяжите к ним обработчик событий change. Если у них нет значения, присвойте им границу ошибки, в противном случае удалите границу ошибки, если она существует.

Taplar 26.10.2018 16:21

Это отличная идея, но: она меняет цвет границы, пока поле ввода находится в фокусе. Он должен измениться, если в центре внимания находится не он. Как такое возможно? Любые идеи?

Franz Bucher 26.10.2018 18:55
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
4
38
0

Другие вопросы по теме