2016-08-06 3 views
0

У меня есть форма, которая представляет собой просто отлично, но когда я добавляю код jQuery, чтобы показать загрузочный div, используя spin.js, все перестает работать.jQuery submit() с spin.js препятствует отправке формы?

<form id="search_form" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST"> 
<!-- Form inputs here --> 
... 
<input id="exam_search" type="submit" name="submit" value="Search" /> 

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

var opts = // Array of options 
var spinner = null; 
$("#search_form").submit(function() { 
    spinner_div = document.getElementById('spinner'); 
    if(spinner == null) { 
     spinner = new Spinner(opts).spin(spinner_div); 
     $("#search_results, #query").css({"opacity": "0.75"}); 
     $("#search_form :input").attr("disabled", true); 

    } else { 
     spinner.spin(spinner_div); 
     $("#search_results, #query").css({"opacity": "0.75"}); 
     $("#search_form :input").attr("disabled", true); 
    } 
}); 

Если я изменю все, что код в случае представить это:

$("#search_form").submit(function() { 
    alert ("form submitted"); 
}); 

Это показывает предупреждение, а затем возвращает результаты отправки формы просто отлично.

Что я здесь делаю неправильно?

EDIT я видел в документации JQuery для отправить(), что я не должен использовать название «отправить» на поле ввода. Я тоже пытался изменить это, не повезло.

+0

смог опубликовать jsfiddle Вы? Мое лучшее предположение: у вас есть ошибка, которая останавливает ваш код – Joundill

+0

jsfiddle или фрагмент, потому что это более удобно. – technico

+0

Я предполагаю, что вы отправляете форму через AJAX, вы должны добавить эту часть кода. –

ответ

0

Ну я не знаю, почему, но просто делать это работало:

$("#search_form").submit(function() { 
    var spinner_div = document.getElementById('spinner'); 
    var spinner = new Spinner(opts); 
    spinner.spin(spinner_div); 
});