如果没有元素,如何禁用下拉菜单

时间:2014-06-05 23:34:21

标签: javascript jquery html

我正在开发一个项目,如果没有添加任何元素,我想要禁用下拉菜单(在添加一些选项后它将变为活动状态) 就像在这个例子中,下拉列表是空的但它仍然有效(我可以点击它)。我想禁用该属性。

小提琴示例是:http://jsfiddle.net/7aqZm/

function myFunction()
{
var x = document.getElementById("mySelect");
var option = document.createElement("option");
option.text = "Kiwi";
x.add(option);
}

3 个答案:

答案 0 :(得分:1)

使用jQuery,您可以执行以下操作:

if ($("option#mySelect").length === 0) {
    $("#mySelect").css('display', 'none'); 
    // this hides the select if it's empty
    // if you want to disable, comment the previous line 
    // and uncomment the next one
    // $("#mySelect").prop('disabled', 'disabled');
}

您还可以在$(#mySelect)中查找孩子。您可以使用相反的功能(从禁用选择开始并通过jquery启用它):

$("#mySelect").css('display', 'block') // or 'inline' or...
$("#mySelect").prop('disabled', false); // for enabling

请记得在必要时拨打电话。

答案 1 :(得分:0)

您可以先设置元素的已禁用属性。添加新元素后,可以删除已禁用的属性。

所以:

<select id="mySelect" size="8" disabled="disabled"></select>

和javascript:

function myFunction()
{
    var x = document.getElementById("mySelect");
    x.disabled = false;

    var option = document.createElement("option");
    option.text = "Kiwi";
    x.add(option);
}

只是为了奖励,您还可以使用:empty伪选择器设置select元素的样式(注意您必须删除open和close标记之间的所有内容,包括空格)

的CSS:

#mySelect:empty {
    background-color: red;
}

答案 2 :(得分:0)

选中此http://jsfiddle.net/286qL/

将禁用值设置为true,并在添加内容时将其删除。

document.getElementById("mySelect").setAttribute('disabled', true);
function myFunction()
{   document.getElementById("mySelect").removeAttribute('disabled');
    var x = document.getElementById("mySelect");
    var option = document.createElement("option");
    option.text = "Kiwi";
    x.add(option);
}