Отключенная кнопка jQuery UI остается отключенной при возвращении на страницу
У меня есть кнопка отправки JQuery UI на форме, когда она нажата, чтобы не допустить двойного щелчка, а также чтобы было ясно видно, что на самом деле она была нажата правильно.
Поэтому я использую jQuery для этого:
$('input:submit').click(function() {
$(this).button('disable');
});
Это работает, но проблема в том, что когда пользователь нажимает кнопку "Назад", он остается отключенным. Как правильно отключить кнопку отправки при нажатии? Я, очевидно, использую jQuery, поэтому предпочтение отдается использованию jQuery.
ОБНОВЛЕНИЕ: многие люди предложили мне использовать $(document).ready(function() {$('input:submit').button('enable');});
преодолеть это упорное отключение кнопки. Оказывается, это не сработает, если это произойдет до того, как мой вызов инициализации кнопки в $(function() {}
, Но если я помещу эту кнопку ("включить") после кода инициализации моей кнопки, даже в $(function() {})
раздел, то все работает как положено.
Но теперь я понимаю, что вся эта кнопка отключения работает только в Firefox! Если я отключу кнопку, форма не будет отправлена в IE и Chrome (другие не тестировались)!
ОБНОВЛЕНИЕ 2: Я наконец-то заставил это работать, хотя немного обеспокоен тем, что некоторые браузеры не смогут отправлять вещи с этими обходными путями... Вот мой окончательный код, хотелось бы услышать мнения о потенциальных проблемах:
$(function() {
$('input:submit').button().click(function() {
$(this).button('disable');
$(this).closest('form').submit();
return false;
});
$('input:submit').button('enable');
});
5 ответов
$(document).ready(function(){
$("input:submit").attr("disabled", "");
})
Как уже упоминали другие, формы сохраняют (некоторые из) свое состояние, когда вы нажимаете кнопку "Назад", поэтому вам нужно активировать кнопку "Отправить" при загрузке страницы (что также происходит, когда кто-то нажимает кнопку "Назад").
Добавьте это на свою страницу:
$(document).ready(function(){
$("input:submit").button("enable");
});
Обратите внимание, что это решение использует пользовательский интерфейс jQuery button.enable()
метод, который является обратным к button.disable()
метод, который вы использовали.
Я не могу найти ссылку на button
метод в документации по jQuery API. Вы используете какой-то модуль?
Отражение должно вернуть форму в исходное состояние, поэтому я предполагаю, что с button
метод. Вместо этого попробуйте следующее:
$('input:submit').click(function() {
$(this).attr('disabled', 'disabled');
});
Что ж, он отключен, потому что браузер лучше всего сохраняет состояние формы в истории. Поэтому я бы порекомендовал присоединиться к событию загрузки и удалить атрибут disabled.
Добавьте это на страницу.
$(document).ready(function() {
$('input:submit').button({ disabled: false});
});