如果选择了DropDownList的已定义选项,则禁用CheckBox

时间:2012-12-02 15:40:39

标签: asp.net-mvc asp.net-mvc-3 razor

我正在开发一个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" })

如你所见,我正在使用剃须刀

提前致谢!!你们这里做得很好:))

2 个答案:

答案 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);
        }
    });
});