如果只有一个选项,则禁用选择

时间:2013-03-04 01:18:37

标签: javascript jquery

嘿所以我有这个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已不再使用..

1 个答案:

答案 0 :(得分:1)

由于您有多个输入,因此需要某种形式的迭代来相应地设置其disabled属性。

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

Fiddle

以上效果与:

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

当select有2个或更多选项时,上面的两个代码段都会自动将disabled设置为false。如果这产生了有意义的差异,您可以使用此代码段禁用&lt;没有自动重新启用的2个选项使用&gt; = 2选项进行选择:

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

Fiddle