2010-01-29 5 views
5

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

+1

Вы можете разместить свой код? – ryanulit

+1

Добавьте пустой обработчик выгрузки. Причина в этом связанном вопросе: [Кросс-браузерное событие onload и кнопка «Назад»] (http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-back-button/201406) – user240515

ответ

0

Если у браузера отключено кэширование, страница будет перезагружена, как будто ничего не произошло (кнопка не нажата).

Если вы хотите получить клиентскую сторону, вы можете использовать файл cookie.

Теперь, если у вас есть серверная технология (PHP/Rails), вы можете поместить значение в переменную сеанса.

4
$(document).ready(function() { 
    $('input[type=submit]', this).attr('disabled', false); 

    $('#myform').submit(function(){ 
     $('input[type=submit]', this).attr('disabled', true); 
    });  

}); 

Использование jQuery приведет к тому, что кнопка не будет отключена при использовании кнопки «Назад» в браузере. Протестировано на FF 3.5.

+0

На самом деле это неверно - $ (document) .ready() не срабатывает при нажатии кнопки «Назад»; ни встроенные скрипты. Лучше всего использовать событие window.onpageshow, хотя, если вам нужно поддерживать IE10 или ниже, вам не повезло. Дополнительная информация здесь: https://stackoverflow.com/questions/2638292/after-travelling-back-in-firefox-history-javascript-wont-run/2639165#2639165 – Chris

+0

Краткое добавление к моему комментарию выше: это применимо только для современных браузеров, которые будут кэшировать всю страницу (включая любые изменения, выполненные с помощью сценариев). Таким образом, ответ Эрика выше, вероятно, был бы правильным в момент его публикации - и он все равно будет работать в IE10 и ниже - но если вы найдете этот ответ в 2017 году или позже, будьте осторожны. – Chris

8

Вероятно, вы должны добавить автозаполнения = «выключено» параметр в форму

<form autocomplete="off"> 
    <input type="submit" /> 
</form> 
+0

Мне странно, что Firefox считает состояние кнопки «автозаполнением» ... но в любом случае, спасибо за чистое решение. Кстати, это происходит не только при возвращении в браузер, но и при замене новой версии формы через Ajax. – lawrence

+0

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

+1

Не работает для меня (Firefox 54) –