Как проверить, отключено ли раскрывающееся меню?

Использование jquery, как просто проверить, только ли оно доступно для чтения?

вот что я пытаюсь.

$("#item").keydown(function (event) {
     //alert(event.keyCode);
     if (event.keyCode == 13) {
         $("#ok").click();               
         if ($('#dropLength').prop("disabled") == false) {
             $("#dropLength").focus();
             return;
         }
         if ($('#dropUnit').prop("disabled") == false) {
             $("#dropUnit").focus();
             return;
         }
         $("#qty").focus();                
         return ;
     }
 });

Выпадающие меню устанавливаются с использованием только для чтения с помощью jquery:

if ($('#dropLength').find('option').length <= 1) {
      $('#dropLength').attr("disabled", "disabled");
}
if ($('#dropUnit').find('option').length <= 1) {
      $('#dropUnit').attr("disabled", "disabled");
}   

Ответ 1

.attr решение до 1.6 заключалось в использовании .attr и обработке возвращаемого значения как bool. Основная проблема заключается в том, что возвращаемый тип .attr изменился на string, и поэтому сравнение с == true нарушено (см. Http://jsfiddle.net/2vene/1/ (и переключите версию jquery)).

С 1.6 был введен .prop, который возвращает bool.

Тем не менее, я предлагаю использовать .is(), так как возвращаемый тип по сути является bool, например:

$('#dropUnit').is(':disabled');
$('#dropUnit').is(':enabled');

Более того, .is() намного более естественен (в терминах "естественного языка") и добавляет больше условий, чем простое сравнение атрибутов (например: .is(':last'), .is(':visible').. смотрите документацию на селекторы).

Ответ 3

Есть два варианта:

Первая

Вы также можете использовать как is()

$('#dropDownId').is(':disabled');

Второй

Используя == true, проверив, соответствует ли значение атрибута disabled. attr()

$('#dropDownId').attr('disabled');

все, что вы чувствуете, подходит лучше, вы можете использовать:)

Ура!

Ответ 4

Это $(#dropUnit).attr("disabled") == false