1

作为 JS 的新手,我创建了一个非常简单的脚本来显示和隐藏选择菜单中的“禁用”功能。

一切正常,直到我为选择菜单加载 jQuery UI。然后它不再起作用了。

我尝试了一整天来解决它,但不能。也许任何人都可以帮助我。

// Metadata
$('#year').change(function(){
    var sel = $(this); 
    var val = sel.val();

    if(val == "2008")
    {
         $('#c2').find("option:eq(1)").removeAttr("disabled");
    }
    else
    {
        $('#c2').find("option:eq(1)").attr("disabled", "disabled");

    }

});

应该发生的是,当任何人从#year 中选择“2008”时,它应该启用#c2 中的选项1,反之亦然。

这里似乎可行,但我无法将脚本弯曲到我自己的试验和错误中。

更新代码

<script>
// Metadata
$("#year").selectmenu({

    // listen to the select event of the custom menu, not the original dropdown
    select: function(){
        var val = $(this).val();

       if(val == "2008"){
             $("#c2").find("option:eq(2)").removeAttr("disabled");
        }
        else{
            $("#c2").find("option:eq(2)").attr("disabled", "disabled");
        }

        // must call this to reflect the change
        $("#c2").selectmenu("refresh");
    }
});
</script>
4

2 回答 2

2

查看您链接的演示页面的源代码,似乎有必要通过调用其刷新方法来更新选择菜单。

来自演示源的示例:

files2.find("option:eq(0)").attr("disabled", "disabled");
files2.selectmenu("refresh"); // <-- this

我认为这就是您要寻找的内容:http: //jsfiddle.net/zuXSU/2/。当我更改菜单时,其中一个选项启用/禁用。

相关代码

$("#year").selectmenu({

    // listen to the select event of the custom menu, not the original dropdown
    select: function(){
        var val = $(this).val();
        alert(val);

        if(val == "2008"){
             $(this).find("option:eq(1)").removeAttr("disabled");
        }
        else{
            $(this).find("option:eq(1)").attr("disabled", "disabled");
        }

        // must call this to reflect the change
        $(this).selectmenu("refresh");
    }
});
于 2012-08-16T13:13:27.380 回答
0

尝试这个

 $("#year").enableSelection();

可能这对你有帮助

于 2012-08-16T14:02:30.093 回答