Всем привет! Использую примерно такой код при отправке формы на сервер:
$('form[name=add]').on('submit', function(event){
event.preventDefault();
var th = $(this);
ShowAnim(th.find('button[type=submit]')); // на кнопке отображает анимацию
th.find('button[type=submit]').attr('disabled', 'disabled'); // делает кнопку не активной
var data = th.serialize();
$.post('/ajax/add.php',{data: data},function(d){
HideAnim(th.find('button[type=submit]'));
th.find('button[type=submit]').removeAttr('disabled');
ParseResp(d, 'form[name=add]'); // исходя из ответа сервера определяет что делать с формой
});
});
Если все успешно выполняется, то никаких проблем. Но иногда, очень редко, на кнопке появляется анимация, она становится не активной и все... больше никаких действий с ней нельзя сделать. Если в инспекторе кода убрать "disabled", то можно снова нажать на кнопку и все становится нормально (но пользователь же этого длать не будет, у него заполненная форма пропадет после того как он обновит страницу).
Я не могу определить причину, т.к. ситуация очень редкая, а если вынести этот код за пределы $.post:
HideAnim(th.find('button[type=submit]'));
th.find('button[type=submit]').removeAttr('disabled');
Кнопка становится активной до того как скрипт дождется ответа от сервера, в результате чего пользователи отправляют две одинаковые формы.