rails 3 отображает загрузочную анимацию в форме отправки с валидацией JavaScript - PullRequest
0 голосов
/ 24 июля 2011

У меня есть форма, которую я отправляю через ajax, пока форма отправляется, мне нужно отобразить загрузочный анимированный GIF. Все нормально работает, когда я делаю следующее

моя форма

  <% form_tag url_for(:action=>'create'),:remote=>true, :id=>"registration_form" do %>
   ...some form fields...
   <% submit_tag 'Create my account' %>
 <% end %>

У меня есть анимированный GIF, который находится в скрытом div, который:

<div id="loading_registration" style="display:none" >loading...</div>

и в моем разделе сценариев у меня есть

  var toggleLoading = function() { $("#loading_registration").toggle() };
  $("#registration_form")
  .bind("ajax:loading",  toggleLoading)
  .bind("ajax:complete", toggleLoading)
  .bind('ajax:success', function(evt, data, status, xhr) {
                   });  

Теперь мне нужно было изменить это, чтобы выполнять функции проверки клиентского javascript перед тем, как форма отправляется через ajax на сервер.

поэтому я сделал следующее:
в моем разделе сценария я добавил следующую функцию:

$('#registration_form').submit(function() {

if ($("#first_name").val()!=''){
    $(this).ajaxSubmit(options); //submit the form 
}
else{
    ..display some client side message to the user
}
    // !!! Important !!!
    // always return false to prevent standard browser submit and page navigation
    return false;
});

Он работает нормально и выполняет проверку javascript перед тем, как обработать вызов ajax.
но проблема в том, что теперь он не отображает мою анимацию загрузки gif
Я попытался добавить его в раздел параметров ajaxSubmit следующим образом:

var toggleLoading = function() { $("#loading_registration").toggle() };                   
 var options = { loading: toggleLoading,
                 complete: toggleLoading}                    


$('#registration_form').ajaxSubmit(options);

но это не сработало. это работает, только если я вызываю функцию оповещения изнутри, как это

var options = { loading: alert('loading'),
        complete: alert('complete')}                     
 $('#registration_form').ajaxSubmit(options);

но если я вызываю функцию вместо предупреждения, она перестает работать

Я буду рад здесь, если у кого-то есть решение этой проблемы

Спасибо

1 Ответ

1 голос
/ 24 июля 2011

Вы пробовали то же самое с плагином проверки jquery ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...