我有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);
}
});
请建议
答案 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();
希望这有帮助。