我正在开发一个asp.net mvc3应用程序。我有一个@Html.DropDownList("abcd")
和一个@Html.CheckBox("efgh")
。
我想要的是什么:
如果选择了DropDownList的已定义选项,则应禁用CheckBox。
我想到了......那样:@if "defined option" is chosen of DropDownList("abcd") {
disable checkbox("efgh")
我已经找到了如何禁用复选框:
@Html.CheckBox("efgh", new { disabled = "disabled" })
如你所见,我正在使用剃须刀
提前致谢!!你们这里做得很好:))
答案 0 :(得分:2)
我想到了......那样:
不,您应该考虑使用javascript函数,因为下拉列表中的更改发生在客户端上,而不是服务器上。因此,基本上您需要同意下拉列表中的onchange
事件,读取所选值并根据此值切换复选框残疾状态。
例如,如果您使用的是jQuery,则可能如下所示:
$(function() {
$('#abcd').change(function() {
var disabled = this.value == 'defined option';
$('#efgh').prop('disabled', disabled);
});
});
在我的示例中,abcd
显然是您的下拉列表的ID,efgh
是您的复选框的ID。因此,请确保它们正确并符合您的实际值。
哦,作为旁注,我不会忘记,如果禁用HTML输入元素,则在提交表单时,它的值永远不会发送到服务器。如果您仍然希望在无法修改输入的同时将值提交给服务器,则可能需要将其设为readonly
而不是禁用它。
var readonly = this.value == 'defined option';
$('#efgh').prop('readonly', readonly);
答案 1 :(得分:0)
现在这对我有用
$(function() {
$('#abcd').change(function() {
if (this.value == 'defined option') {
$('#efgh').attr('disabled', disabled);
} else {
$('#efgh').removeAttr('disabled', disabled);
}
});
});