选择后禁用一个选项

时间:2012-05-17 20:13:45

标签: jquery html

我试图将这两个代码的想法绑定在一起,但它无法正常工作。

我想在选择完成后禁用第一个选项。

This is the behavior I'm wanting;选择完成后,第一个选项被禁用。

this is my code我希望在选择后续元素时禁用第一个选项。

2 个答案:

答案 0 :(得分:1)

[更新的答案]

http://jsfiddle.net/N9JEx/2/

function displayVals() {
    var singleValues = $("select option:selected").text();
    if (!isNaN(singleValues )) {
        $("#hiddenselect").val(singleValues);
        $("<p></p>").html("Percent of : &nbsp" + singleValues).appendTo('body');
    }
}

$(document).ready(function() {
    $("select").change(function() {
        displayVals();
        if (this.selectedIndex > 0) {
            var option = $('option:selected', this);
            option.prop('disabled', true);
        }
    });
});​

答案 1 :(得分:1)

我相信这可以回答你的问题:

http://jsfiddle.net/dq97z/66/

displayVals内,我执行了以下操作:

if ($("#menucompare").prop("selectedIndex") !== "0") {
    // Within the select (you could be more specific) find
    // the first (direct descendant) option value and 
    // disable it to make it unselectable
    $("select > option:first").prop("disabled", "disabled")
}

此段找出选择菜单的所选索引是什么,如果用户选择了除初始值(0)以外的其他内容,则会设置第一个要禁用的选项。

更新http://jsfiddle.net/dq97z/72/

根据documentation和@ silkster的建议禁用时,将attr()更改为prop()。感谢

此外,如果您不希望在开头选择该选项,您甚至可以在没有seen here的if语句的情况下执行此操作。

function displayVals() {
    var singleValues = $("select option:selected").text();
    ....
    $("select > option:first").prop("disabled", "disabled")
}

在加载DOM之后发生禁用(第一个禁用),因此select仍然可以选择“请选择”。哇...那是很多“选择”。

如果你想在那里留下if语句(这意味着'select one'是可选的,直到实际选择了另一个),你的if语句就需要这样:

if ($("#menucompare").prop("selectedIndex") !== 0) // with no quotes around zero