@pavvel2

Как отправить ajax после ошибки?

Добрый день.
Я не силен в javascript, код отправки писал "методом тыка", все работает и отправка и ошибки но вот проблема в том что после попытки отправить форму с пустыми полями выдает сообщение о не заполненных полях, и после их заполнения скрипт не отправляет, нужно нажать на кнопку 2 раза.

Вот сам скрипт отправки, если не сложно знающим людям проверьте пожалуйста но ошибки.

$("form").submit(function(ev) {
        
        
      // Prevent the form from actually submitting
        ev.preventDefault();
    
        // Get the post data
        var data = $(this).serialize();
    
        // Send it to the server
        $.post('/', data, function(response) {
            
             
        });
        
    var ref = $(this).find("[required]");

    $(ref).each(function(){
        if ( $(this).val() == '' )
        {   
            $('.success-message').hide();
            $('.error-message').fadeIn();
           
            $(this).focus();

            ev.preventDefault();
            return false;
        }
        
            else {
            
                        $('.error-message').hide();      
                        $('.success-message').fadeIn().delay(2000).fadeOut();
      
                        } 

    });  return true;
});


Сообщения:
<div class="error-message" style="display: none;">
    	<p>Заполните все поля пожалуйста!</p>
    </div>
    <div class="success-message" style="display: none;">
    	<p>{{ form.afterSubmitText|default('Thanks for your submission.'|t) }}</p>
    </div>

Спасибо.
  • Вопрос задан
  • 219 просмотров
Решения вопроса 1
atlantech
@atlantech
Full Stack Software Developer
Попробуйте сменить порядок исполнения кода - сначала валидация, затем отправка, затем done-колбек.

$("form").submit(function(ev) {
    var $form = $(this);
    // Prevent the form from actually submitting
    ev.preventDefault();
        
    var ref = $form.find("[required]");

    $(ref).each(function(){
        if ( $(this).val() == '' ) {   
            $('.success-message').hide();
            $('.error-message').fadeIn();
           
            $(this).focus();
        }  else {
            $('.error-message').hide();      

            // Get the post data
            var data = $form.serialize();
    
            // Send it to the server
            $.post('/', data, function(response) {
                $('.success-message').fadeIn().delay(2000).fadeOut();
            });
        } 

    });  
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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