У меня есть форма, которую я отправляю через 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);
но если я вызываю функцию вместо предупреждения, она перестает работать
Я буду рад здесь, если у кого-то есть решение этой проблемы
Спасибо