Отключенная кнопка пользовательского интерфейса jQuery остается отключенной при возврате на страницу - PullRequest
3 голосов
/ 09 декабря 2010

У меня есть JQuery UI кнопка отправки в форме, когда она нажата, чтобы не допустить двойного щелчка, а также чтобы наглядно показать, что она действительно была нажата правильно.

Поэтому я использую jQuery для этого:

$('input:submit').click(function() {
    $(this).button('disable');
});

Это работает, но проблема в том, что когда пользователь нажимает кнопку «Назад», он остается отключенным . Как правильно отключить кнопку отправки при нажатии? Я, очевидно, использую jQuery, поэтому предпочтение отдается использованию jQuery.

ОБНОВЛЕНИЕ : многие люди предлагали использовать $(document).ready(function() {$('input:submit').button('enable');});, чтобы преодолеть это постоянное отключение кнопки. Оказывается, это не сработает, если до моего вызова инициализации кнопки в $(function() {}. Но если я добавлю эту кнопку ('enable') после кода инициализации моей кнопки, даже в разделе $(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 ]

2 голосов
/ 09 декабря 2010
$(document).ready(function(){
 $("input:submit").attr("disabled", "");
})
0 голосов
/ 09 декабря 2010

Как уже упоминалось, формы сохраняют (некоторые из них) свое состояние при нажатии кнопки «Назад», поэтому вам необходимо активировать кнопку отправки при загрузке страницы (что также происходит, когда кто-то нажимает кнопку «Назад»).

Добавьте это на вашу страницу:

$(document).ready(function(){
  $("input:submit").button("enable");
});

Обратите внимание, что в этом решении используется метод jQuery UI button.enable(), обратный методу button.disable(), который вы использовали.

0 голосов
/ 09 декабря 2010

Я не могу найти ссылку на метод button в документации jQuery API.Используете ли вы какой-то модуль?

Откат должен вернуть форму в исходное состояние, поэтому я предполагаю, что с методом button должна происходить некоторая магия сеанса.Вместо этого попробуйте следующее:

$('input:submit').click(function() {
    $(this).attr('disabled', 'disabled');
});
0 голосов
/ 09 декабря 2010

Ну, это отключено, потому что браузер лучше всего сохраняет состояние формы в истории. Поэтому я бы порекомендовал присоединиться к событию загрузки и удалить атрибут disabled.

0 голосов
/ 09 декабря 2010

Добавьте это на страницу.

$(document).ready(function() {
  $('input:submit').button({ disabled: false});
});
...