2013-03-04 2 views
1

Эй поэтому у меня есть этот HTML (выводится через PHP цикла):Отключить выберите, если только одна опция доступна

<select class="dropdown" id="pa_genre" name="attribute_pa_genre"> 
    <optgroup label="Choose an option:"></optgroup> 
    <option value="sport" selected="selected">Sport</option> 
</select> 

И этот JQuery (взято из Disable a <select /> if there is only one <option /> with jQuery):

$(document).ready(function(){ 
    var $sca = $("select.dropdown"); 
    if ($sca.find("option").length <= 1) { 
     $sca.prop('disabled', true); 
    } 
}); 

но не может заставить его работать. У меня есть более одного раскрывающегося списка на странице с тем же классом (следовательно, почему таргетинг на класс не id). Я изменил attr к prop, потому что я уверен, что это новая версии и attr не используются больше ..

+0

Похоже, это [здесь] работает нормально (http://jsfiddle.net/BTpB9/) –

+0

@AndrewWhitaker да, но у меня будет что-то вроде этого: http://jsfiddle.net/BTpB9/2/ – Ahhhhhhhhhhhhhdfgbv

+1

Я думаю, что логика может быть немного испорчена, если у вас есть 2 элемента select.dropdown на странице, каждый из которых имеет по 1 опции, тогда результат $ sca.find ('option') будет равен 2, т. е. ни один из них не будет отключен. Я бы использовал каждый на начальном селекторе, чтобы обрабатывать каждый из них за раз. – OJay

ответ

1

Как у Вас есть больше чем один вход, необходимо некоторая форма итерации, чтобы установить их disabled свойства соответственно.

$("select.dropdown").prop('disabled', function() { 
    return $('option', this).length < 2; 
}); 

Fiddle

выше имеет тот же эффект, как:

$("select.dropdown").each(function() { 
    this.disabled = $('option', this).length < 2; 
}); 

Оба фрагментов выше будет автоматически устанавливается disabled в false, когда выбор есть 2 или больше вариантов. Если это делает значимые различия, вы можете использовать этот фрагмент кода для отключения выбирает с < 2 вариантов без автоматического повторного включения выбирает с> = 2-х вариантов:

$("select.dropdown").each(function() { 
    if ($('option', this).length < 2) this.disabled = true; 
}); 

Fiddle

+0

Приветствия! Работы:] – Ahhhhhhhhhhhhhdfgbv

+0

Нет проблем, обновленных простыми эквивалентами, которые также легче понять. ': P' –

Смежные вопросы