AntonBrock
@AntonBrock
screen light

Помочь понять как сделать проверку, когда уже есть проверка?

Ребят, я не прошу решения , и даже против него. Мне нужно чтобы ваши светлые умы подтолкнули к решению задачи.

Есть прверка, но она все равно дает отправить форму - даже если та пуста и не прошла валидацию.
Понимаю, что нужно сделать проверку по клику.
Если у такого есть такой-то стиль ( значит не отправлять), если нет, то гуд.

Либо же, при клике на кнопку "Отправить" делать функцию валидации. Пробывал .on('click'), .click, .submit().
Но после этого даже валидация не работает.
Код на codepen: https://codepen.io/AntonBrock/pen/daNWZR?editors=1010
Спасибо за пинок!

$(document).ready(function() {
$("#email").blur(function() {
      if ($(this).val() != "") {
        var pattern = /^(?!.*@.*@.*$)(?!.*@.*\-\-.*\..*$)(?!.*@.*\-\..*$)(?!.*@.*\-$)(.*@.+(\..{1,11})?)$/;
  
        if ($(this).val() != "" && pattern.test($(this).val())) {
            
            $(this).tooltip('disable');
            $(this).removeClass("error_message");
            $(this).attr('title', '');
            $(this).attr('data-original-title', '');
          } else {
            $(this).tooltip('enable');
            $(this).attr('title', '');
            $(this).addClass("error_message");
            $(this).attr('data-original-title', 'ошибочка');
        }
      }
            if($(this).val() == "") {
               $(this).tooltip("destroy");
            }   
    });
  });

$(document).ready(function(){
  $('#kek').on('click', function () {
      if($('#email').hasClass('.error_message')) { 
      alert('hey');
      }
   });
});

$(document).ready(function() {
$('#email').on('focus', function() {
$(this).removeClass('error_message');
  });
});

$( "#email" ).keyup(function() {
  if($(this).val() === "") {
      $(this).tooltip("destroy");
}
});
  • Вопрос задан
  • 106 просмотров
Решения вопроса 2
FeST1VaL
@FeST1VaL
Тихий
Ошибка тута. Ты поставил .error_message, а не просто error_message, короче точка лишняя

if($('#email').hasClass('.error_message')) {
Ответ написан
AntonBrock
@AntonBrock Автор вопроса
screen light
Спасибо Артем Будин за указ на ошибку, по привычке как в CSS прописал и zendor за возню со мной и разжовывание инфы. Понял что лучше вешать на form , так как если на кнопку все равно будет отправляться пустая форма, но можно сделать .submit и все будет ок.
Поэтому сделал на форму, через submit и с preventDefault() для запрета отправки формы.

Готовое решение:
$(document).ready(function() {
$("#email").blur(function() { 
        if ($(this).val() != "") {
        var pattern = /^(?!.*@.*@.*$)(?!.*@.*\-\-.*\..*$)(?!.*@.*\-\..*$)(?!.*@.*\-$)(.*@.+(\..{1,11})?)$/;
  
        if ($(this).val() != "" && pattern.test($(this).val())) {
            
            $(this).tooltip('disable');
            $(this).removeClass("error_message");
            $(this).attr('title', '');
            $(this).attr('data-original-title', '');
          } else {
            $(this).tooltip('enable');
            $(this).attr('title', '');
            $(this).addClass("error_message");
            $(this).attr('data-original-title', 'ошибочка');
        }
      }
            if($(this).val() == "") {
               $(this).tooltip("destroy");
            }   
    });
  });

$(document).ready(function(){
  $('#dub').submit(function (event) {
      if($('#email').hasClass('error_message') || $('#email') == "") { 
        event.preventDefault();
      } 
   });
});

$(document).ready(function() {
$('#email').on('focus', function() {
$(this).removeClass('error_message');
  });
});

$( "#email" ).keyup(function() {
  if($(this).val() === "") {
      $(this).tooltip("destroy");
}
});


Еще раз спасибо! Понял и запомнил :)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы