Я использую некоторые jquery, чтобы отключить кнопку отправки формы после того, как она была нажата, чтобы предотвратить случайный повторный щелчок. Это отлично работает во всех браузерах, кроме Firefox. В Firefox, если пользователь использует кнопку Назад в браузере, чтобы вернуться к странице после отключения кнопки отправки, кнопка отправки по-прежнему отключена. Есть ли решение этой проблемы?Кнопка отправки формы остается недоступной при использовании кнопки «Назад» в Firefox
ответ
Если у браузера отключено кэширование, страница будет перезагружена, как будто ничего не произошло (кнопка не нажата).
Если вы хотите получить клиентскую сторону, вы можете использовать файл cookie.
Теперь, если у вас есть серверная технология (PHP/Rails), вы можете поместить значение в переменную сеанса.
$(document).ready(function() {
$('input[type=submit]', this).attr('disabled', false);
$('#myform').submit(function(){
$('input[type=submit]', this).attr('disabled', true);
});
});
Использование jQuery приведет к тому, что кнопка не будет отключена при использовании кнопки «Назад» в браузере. Протестировано на FF 3.5.
На самом деле это неверно - $ (document) .ready() не срабатывает при нажатии кнопки «Назад»; ни встроенные скрипты. Лучше всего использовать событие window.onpageshow, хотя, если вам нужно поддерживать IE10 или ниже, вам не повезло. Дополнительная информация здесь: https://stackoverflow.com/questions/2638292/after-travelling-back-in-firefox-history-javascript-wont-run/2639165#2639165 – Chris
Краткое добавление к моему комментарию выше: это применимо только для современных браузеров, которые будут кэшировать всю страницу (включая любые изменения, выполненные с помощью сценариев). Таким образом, ответ Эрика выше, вероятно, был бы правильным в момент его публикации - и он все равно будет работать в IE10 и ниже - но если вы найдете этот ответ в 2017 году или позже, будьте осторожны. – Chris
Вероятно, вы должны добавить автозаполнения = «выключено» параметр в форму
<form autocomplete="off">
<input type="submit" />
</form>
Мне странно, что Firefox считает состояние кнопки «автозаполнением» ... но в любом случае, спасибо за чистое решение. Кстати, это происходит не только при возвращении в браузер, но и при замене новой версии формы через Ajax. – lawrence
Я бы сказал, что этот ответ должен быть принят. –
Не работает для меня (Firefox 54) –
Вы можете разместить свой код? – ryanulit
Добавьте пустой обработчик выгрузки. Причина в этом связанном вопросе: [Кросс-браузерное событие onload и кнопка «Назад»] (http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-back-button/201406) – user240515