从jquery中的选择框中删除“selected”属性

时间:2014-02-19 22:30:03

标签: jquery

我有2个下拉框,其中一个包含“员工和公司”等选项 如果我选择员工另一个dd带有员工姓名,否则将被禁用并选择空值... 我的问题是在第一个dd的工作人员搜索和第二个dd的名称工作正常,然后我选择公司与第一个dd和空第二个仍然搜索影响员工姓名我们以前做过。

在第二个dd(不像ajax)中加载一个人员列表,我正在尝试通过jquery更改禁用/启用

我试过的是

if($("#ctl00_MainContent_ddlEnteredBy").val()!="1"){
    $("#ctl00_MainContent_ddlStaffList option[value='']").attr("selected", "selected");

    $("#ctl00_MainContent_ddlStaffList").attr("disabled", true);

}
$("#ctl00_MainContent_ddlEnteredBy").change(function() { 
        if($("#ctl00_MainContent_ddlEnteredBy").val()=="1"){
            $("#ctl00_MainContent_ddlStaffList").attr("disabled", false);
            }
        else{
            $("#ctl00_MainContent_ddlStaffList option[value='']").attr("selected", "selected");                
            $("#ctl00_MainContent_ddlStaffList").attr("disabled", true);
            }
 });​

请建议

1 个答案:

答案 0 :(得分:0)

你几乎就在那里,但selected上的<option>属性只是告诉浏览器在加载页面时应该预先选择哪一个 - 用JS更改它不会更改将随表单提交的当前值,您需要使用val("")上的<select>代替。

此外,禁用的元素不会随表单一起提交,因此服务器上的.NET可能正在使用上一个回发中的值,如果它使用ViewState保存它,那么最好隐藏第二个下拉菜单比禁用它:

if($("#ctl00_MainContent_ddlEnteredBy").val()!="1"){
    $("#ctl00_MainContent_ddlStaffList option[value='']").attr("selected", "selected");
    $("#ctl00_MainContent_ddlStaffList").hide();
}
    $("#ctl00_MainContent_ddlEnteredBy").change(function() {
    if($("#ctl00_MainContent_ddlEnteredBy").val()=="1"){
        $("#ctl00_MainContent_ddlStaffList").show();
    }
    else{
        $("#ctl00_MainContent_ddlStaffList").val("");
        $("#ctl00_MainContent_ddlStaffList").hide();
    }
});​

此外,自由地整理了一下:

var ddlEnteredBy = $("#ctl00_MainContent_ddlEnteredBy");
var ddlStaffList = $("#ctl00_MainContent_ddlStaffList");

ddlEnteredBy.on("change", function() {
    if (ddlEnteredBy.val() == 1) {
        ddlStaffList.show();
    }
    else {
        ddlStaffList.val("").hide();
    }
}).change();

希望这有帮助。