2014-02-12 4 views
0

Мой Jquery код выглядит следующим образом:.JQuery подождать, пока элемент не спрятался, прежде чем продолжить

if($('#LoginFormError').is(':visible'))$('#LoginFormError').slideUp(); 
//Check inputs and run ajax 
if(CheckInput('#LoginUsername') && CheckInput('#LoginPassword')){ 
    $('#LoginSubmit').attr('disabled', true); 
    $.ajax({ 
     (..ajax stuf..) 
    }); 
}else{ 
    $('#LoginFormError').html("Please fill in everything."); 
    $('#LoginFormError').slideDown(); 
} 

Для этого CheckInput возвращает истину, если поле заполнено

То, что я хочу do, если тогда отображается #LoginFormError, чтобы скрипт скрыл элемент, а затем запустил процедуры проверки. Проблема в том, что #LoginFormError может вообще не отображаться, поэтому я не могу поместить все в обратный вызов из функции SlideUp, хотя я не думаю, что могу.

+0

Можете ли вы объяснить, почему вы не можете поместить его в обратный вызов? Обратный вызов 'slideUp' вызывается немедленно, если элемент уже скрыт. –

ответ

2

Поскольку callback всегда будет вызываться (даже если элемент уже скрыт), нет необходимости проверять. Просто поместите все в обратный вызов:

$('#LoginFormError').slideUp(400, function{ 
     //Check inputs and run ajax 
     if(CheckInput('#LoginUsername') && CheckInput('#LoginPassword')){ 
      $('#LoginSubmit').attr('disabled', true); 
      $.ajax({ 
       (..ajax stuf..) 
      }); 
     }else{ 
      $('#LoginFormError').html("Please fill in everything."); 
      $('#LoginFormError').slideDown(); 
     } 
    } 
); 
Смежные вопросы