在这种情况下,我有两个下拉选择元素,它们对应于两个独立的div容器。当用户在第一个选择元素中选择一个选项时,该特定值在相应的div中被更改为disabled。为了更好地了解问题,我附上了特定部分的两张图片。
第一个图像显示了选择元素的初始状态。 "选择一个标准"元素对应于我的能量标准"我的能量标准" div,"选择期间"对应于我的学习期"我的学习期"格。
问题
当我从选择下拉列表中选择一个句点时(从1到40),问题就出现了。理想情况下,如果我选择1年,我的学习期间的第一个复选框" div应该被禁用。但是这样做会导致2003年被禁用。但是,如果我选择任何大于4的年份,它会像您期望的那样工作。
我已经包含了与每个部分对应的代码部分。
CODE
//Select a Standard Code section
$("#baselineResidentialStandardYear").change(function () {
standardValue = $("#baselineResidentialStandardYear").val();
console.log(standardValue);
//if (standardValue == $("#" + standardValue).attr('id') && $('#' + standardValue).hasClass("standard")) {
// $('#' + standardValue).attr('disabled', true);
// $("#standards").find('input[type=checkbox]').not('#' + standardValue).attr('disabled', false);
//}
if ($('#' + standardValue).hasClass("standard")) {
if (standardValue == $('#' + standardValue).attr('id')) {
$('#' + standardValue).attr('disabled', true);
$('#standards').find('input[type=checkbox]').not('#' + standardValue).attr('disabled', false);
}
}
});
//Select Period code
$("#baselineResidentialStudyPeriod").change(function () {
period = $("#baselineResidentialStudyPeriod").val();
console.log(period);
//if (period == $('#' + period).attr('id') && $('#' + period).hasClass("studyPeriod")) {
// console.log("test");
// $('#' + period).attr('disabled', true);
// $("#years").find('input[type=checkbox]').not('#' + period).attr('disabled', false);
//}
$('#years').find('input[class=checkbox]').each(function () {
if ($(this).hasClass("studyPeriod")) {
$('#' + period).attr('disabled', true);
$('#years').find('input[type=checkbox]').not('#' + period).attr('disabled', false);
}
});
});
即使我使用的是.find方法,我也不太清楚为什么会发生这种错误的交互
IMP NOTE
"我的能源标准"中的复选框元素; div的值属性为1到4。 “我的学习期间”中的复选框元素" div的值属性为1到40。
我必须对此进行维护,因为此信息将用于从数据库中检索更多补充信息。
答案 0 :(得分:0)
你需要做这个......
$('#' + standardValue).attr('disabled', true);
这......
$('#' + period).attr('disabled', true);
...成
$('#standards #' + standardValue).attr('disabled', true);
和...
$('#years #' + period).attr('disabled', true);
分别
您的另一个问题是,在使用重复ID时,某些浏览器可能会失败。您应该将这些ID更改为类。拥有多个id =“1”等是不好的做法。