Отключенная кнопка 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});
});
Другие вопросы по тегам