Почему происходит зацикливание в ajax запросе?

При успешном выполнении всё отрабатывает. Но при нажатии обратно в поле модальные окна #invalid-login-data/#empty-fields исчезают и появляются заново. Почему так происходит и как это исправить? Заранее благодарю.

function sendData() {
  $(this).on('click', function() {
    var login_val = $('input[name="login"]').val();
    var password_val = $('input[name="password"]').val();

    $.ajax({
      type: "POST",
      url: "template/enter.php",
      data: {
        login: login_val,
        password: password_val
      },
      success: function(result) {
        if (result === "Invalid login or password") {
          $('#invalid-login-data').fadeIn();
        } else if (result === "One or more fields is empty") {
          $('#empty-fields').fadeIn();
        }
      },
      error: function() {
        alert('Problem whith POST!');
      }
    });

    $('input:text, input:password').on('focus', function() {
      $('#invalid-login-data').fadeOut();
      $('#empty-fields').fadeOut();
    });
  });
}
  • Вопрос задан
  • 204 просмотра
Решения вопроса 1
Inkognitoss
@Inkognitoss
Full-stack разработчик.
в success выведите что-нибудь в консоль лог, он при закрытии у вас там не отрабатывает заново?
у вас вешается событие на $(this).on('click', function()это вероятно тот же объект что здесь
$('input:text, input:password').on('focus', function() {

т.е вас поэтому и просят всё показать. вы функцию как вызываете? наверное onclick="sendData()"
вам бы еще this в нее передать, а то this наверное у вас внутри нее это весь документ
а потом снова кликаете по этому this

А лучше, попробуйте убрать
$(this).on('click', function() { //убрать
//.......код внутри оставить........
}); //убрать
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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