我有这个 javascript:
$(function () {
$.fn.enable = function () {
return this.show().removeAttr("disabled");
}
$.fn.disable = function () {
return this.hide().attr("disabled", "disabled");
}
var incomeType = $("#MyModel_IncomeTypeCheckBox");
var incomeTypeStatusSection = $("#incomeTypeStatusDiv, #incomeTypeStatusDiv input, #incomeTypeStatusDiv textarea, #incomeTypeStatusDiv select");
setControls();
incomeType.change(function () {
setControls();
});
function setControls() {
switch (incomeType.val()) {
case "FullTime":
incomeTypeStatusSection.disable();
break;
case "PartTime":
incomeTypeStatusSection.disable();
break;
case "SelfEmployed":
incomeTypeStatusSection.enable();
break;
case "SocialSecurity":
incomeTypeStatusSection.disable();
break;
case "Retirement":
incomeTypeStatusSection.disable();
break;
case "ChildSupport":
incomeTypeStatusSection.disable();
break;
case "Maintenance":
incomeTypeStatusSection.disable();
break;
case "Other":
incomeTypeStatusSection.disable();
break;
}
}
});
我认为的代码很简单:
<div id="incomeTypeStatusDiv">
<!--Show some hidden inputs here-->
</div>
MyModel.IncomeTypeCheckBox
是基于与上述值enum
相对应的。case
例如,我可以将上述 javascript 与下拉列表一起使用。选择将显示/隐藏适当的<div>
.
我现在尝试使用相同的代码根据复选框列表选择来显示/隐藏,但没有成功。<div>
我想隐藏的是出现而不是被隐藏。我错过了什么,它不适用于复选框列表?如何使用复选框列表进行这项工作(即,如果我单击“SelfEmployed”复选框,它将显示适当<div>
,当我取消选中“SelfEmployed”复选框时,它将隐藏<div>
?
我可以:
$(document).ready(function () {
$("input[name$='stepincomeinformation.incometypecheckbox']").click(function () {
var check_value = $(this).val();
if (check_value == 'selfemployed') {
$("#incometypecheckbox_selfemployed").toggle(this.checked);
}
});
$("#incometypecheckbox_selfemployed").hide();
});
但是如果它<div>
是隐藏的,它将不允许我继续前进,因为它正在尝试验证。其他 javascript 不验证<div>
它是否被隐藏。
javascript 基于Validating a dynamic UI with Mvc2,对我来说效果很好。它用于在<div>
隐藏时禁用验证(并使用 mod 和MicrosoftMvcValidation.js
活页夹。
任何帮助表示赞赏。
请参阅下面的最终结果(基于答案)