jQuery сниппеты: блокировка многократного нажатия кнопки отправки формы
Формы предназначены для обмена данными между пользователем и сервером. Для отправки формы на сервер используется кнопка submit
, того же эффекта можно добиться, нажав клавишу enter
в пределах текущей формы. Очень часто пользователи, не дождавшись завершения обработки формы, повторно (многократно) нажимают кнопку отправки данных на сервер.
Чтобы избежать дублирования информации на принимающей стороне, проще всего при возникновении события submit
на форме блокировать кнопку отправки.
Приведенный сниппет с легкостью решает поставленную задачу.
// Находим все формы в документе $('form').submit(function( e ){ // Блокируем кнопки при отправке формы $('input[type=submit]', $(this)).prop( 'disabled', true ); e.preventDefault(); });
Живой пример
А если отправляем данные $.ajax(), тогда для этих же целей отключаем асинхрон.
А то на одном моём сайте админы (админши) нафигачили дублей…
Благодарю за наводку.
Не работает.
Что именно не работает? Покажите ваш пример
У вас на сайте используется jQuery.noConflict();, поэтому
$
везде замените наjQuery
Да-да, разумеется, заменял. Не работает все равно.
Кнопка-то блокируется?
В мозиле и ИЕ не работает(( disabled добавляется, но не орабатывается
А что конкретно не работает? Мой пример работает?
при нажатии на кнопку атрибут добавляется, но в мозиле и ИЕ не работает…
пишет disabled=disabled, но форма дальше отправляется.
Так, а разве форма не должна отправляться по нажатию кнопки? Или она отправляется при повторном нажатии?
отправляется при повторном
Версию ИЕ подскажите мне для тестов
у меня 9…
Да, есть такая проблема, постараюсь найти причину
Если форма отправляется POST на другую страницу и потом нужно вернуться НАЗАД к форме, то кнопка так и остаётся заблоченной!
Вернуться назад программно или кнопкой в браузере?
В примере допущена ошибка, e.preventDefault() не даст никакого результата т.к. объект события не определен
Спасибо, исправил