2016-11-09 10 views
0

При использовании button это работает (загрузчик отображает до загрузки страницы):Выполнение сценария из из отправить

<script> 
    $(document).ready(function(){ 
     $(".loader").hide(); 
     $(".overlay").fadeOut(1000); 

     $('button').click(function() { 
      $(".loader").fadeIn("fast"); 
      $(".overlay").fadeIn(100); 
     }); 
    }); 
</script> 

Но если я использую Submit он не делает:

Я пытаюсь следующее работа:

<script> 
    $(document).ready(function(){ 
     $(".loader").hide(); 
     $(".overlay").fadeOut(1000); 

     $("form").submit(function() { 
      $(".loader").fadeIn("fast"); 
      $(".overlay").fadeIn(100); 
     }); 
    }); 
</script> 

Я также попытался без радости:

$(input[type="submit"]).click(function() { 

Я хочу, чтобы это работало для всех Представление на странице и поэтому не хотело использовать идентификаторы. Любые указатели наиболее приветствуются.

UPDATE

$("form").submit(function(e) { 

сделал трюк.

+0

В любом случае, если вы не представите форму, обновите страницу, что сделает эффекты выцветания несущественными? В этом случае определить «не работает». – David

+0

Представление действительно перезагружает страницу, которая эффективно обновляет ее, вы правы. Я хочу, чтобы загрузчик показывал, когда нажата кнопка отправки, а затем, когда страница перезагрузила загрузчик. Как я уже сказал, он отлично работает, если я использую обновление , но не с RGriffiths

+0

Но если страница перезагружается почти мгновенно, то разве загрузчик все еще не выполняет свою работу? Кажется, что это «работает» просто отлично. Единственная причина, по которой вы не видите загрузчика, состоит в том, что фактическая операция выполняется быстрее, чем загрузчик. Это действительно плохо? Вы спрашиваете, как искусственно вводить задержку перед перезагрузкой страницы? – David

ответ

3

Вы должны запретить поведение вашей формы по умолчанию, иначе оно будет отправлено (и браузер изменится на следующую страницу [действие в вашей форме]).

Чтобы отключить действие submit, вам необходимо использовать event.preventDefault() внутри функции submit/click.

Если вам нужно отправить форму - вы можете добавить переменную, чтобы проверить, если submittion уже предотвращена, и в соответствии с этим, чтобы предотвратить (или отправить форму в функции submit):

var submitPrevented = false; 
$("form").submit(function(e) { 
    if (!submitPrevented) { 
     submitPrevented = true; 
     e.preventDefault() 
    } 
    $(".loader").fadeIn("fast"); 
    $(".overlay").fadeIn(100); 
    var that = this; 
    setTimeout(function() { 
     that.submit(); 
    }, 1000); 
}); 

Обратите внимание, что я добавил элемент e в качестве параметра функции.

Относительно последнего кода, который вы написали - там есть синтаксическая ошибка. Это правильный синтаксис:

$('input[type="submit"]').click(function() { 
+0

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

+0

@RGriffiths, проверьте обновление – Dekel

+0

Спасибо. Больше, чем на самом деле необходимо, поскольку я всегда хочу, чтобы страница была опубликована. Простое выполнение функции (e), а не функции(), делает трюк. Я ценю указатель. – RGriffiths