Отключение кнопки в IE6, IE7, IE8? - PullRequest
6 голосов
/ 05 июля 2011

Я пытаюсь отключить кнопку - с помощью jQuery 1.4.4 следующий код в IE

jQuery('#id').attr("disabled", true);

С HTML

<button id="id" type="button"
    class="some-class"
     disabled="">Comment</button>

Работаетв FF, Chrome и т. д. и, конечно, не работает в IE?Как я могу исправить?

то есть <button disabled="disabled"> не работает в IE или?

Редактировать: Обратите внимание, что <button id='id' disabled>foobar</button> является действительным html

Ответы [ 5 ]

16 голосов
/ 05 июля 2011

Значения атрибута XML / HTML являются строками.Значения «true» и «false» не имеют специального значения (технически они даже не разрешены ) .Соглашение состоит в том, чтобы установить значение для имени атрибута:

jQuery('#id').attr("disabled", "disabled");

Также обратите внимание, что в вашем HTML, <button disabled=""> уже отключит кнопку.Просто пропустите атрибут disabled или повторно включите его с помощью jQuery:

jQuery('#id').removeAttr("disabled");
1 голос
/ 09 сентября 2013

У меня были идентичные проблемы в IE8, и я смог их решить, поэтому решил добавить пару пунктов. Решение, предлагаемое Phihag, является правильным и неправильным. Это правда, что XML / HTML не примет истинное логическое значение в качестве атрибута - но здесь мы говорим о синтаксисе jQuery, который принимает логические значения в качестве аргументов и устанавливает атрибуты соответствующим образом.

С отключением и включением элементов ввода в IE я обнаружил, что последовательно работает просто , а не"жесткий код" исходного желаемого значения непосредственно в X / HTML. Если элемент управления должен быть отключен от начального рендеринга, лучше всего вызвать функцию, как только страница будет отображена, чтобы отключить ее. Возможно, это немного клудж, и, как и многие другие вещи, этого не должно быть, но это то, что в конечном итоге работает на меня. Очень просто.

Надеюсь, это кому-нибудь поможет. Я провел много усилий по отладке, чтобы точно определить это.

0 голосов
/ 28 марта 2014

Это из документации JQuery API :

$( ".selector" ).button( "option", "disabled", true );

Это работает для меня даже в IE 8 с JQuery UI 1.8.14 или выше.В более старых версиях события нажатия запускаются даже на отключенных кнопкахТаким образом, в случае, вы должны оценить отключение кнопки и отменить событие:

function clickHandler(event) {
    if ($(event.currentTarget).button("option", "disabled")) {
        return false;
    }
    // other handle stuff...
}
0 голосов
/ 05 июля 2011

Просто для того, чтобы добавить дополнительную ценность к другим ответам, опубликованным здесь.

Я думаю, что ваша формулировка немного неправильная, и, судя по всему, вы хотите знать, как отключить и снова включитьbutton cross browser.

Атрибут disabled, если он присутствует, всегда должен отключать элемент, независимо от его значения.Рекомендуемое значение: disabled="disabled".

$('#id').attr("disabled", "disabled")

Чтобы повторно включить элемент, вам нужно полностью удалить атрибут disabled (как указано в других ответах).

$('#id').removeAttr('disabled');
0 голосов
/ 05 июля 2011

Попробуйте:

 jQuery('#id').attr("disabled", "disabled");

Значения атрибута должны быть строками, а не логическими значениями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...