2

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

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

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

4

2 回答 2

2

我想…… 像那样:

不,您应该考虑使用 javascript 函数,因为下拉菜单上的更改发生在客户端上,而不是服务器上。所以基本上你需要订阅onchange你的下拉事件,读取选定的值并根据这个值切换复选框禁用状态。

例如,如果您使用 jQuery,这可能看起来像这样:

$(function() {
    $('#abcd').change(function() {
        var disabled = this.value == 'defined option';
        $('#efgh').prop('disabled', disabled);
    });
});

在我的示例abcd中,显然是下拉列表efgh的 id 和复选框的 id。因此,请确保它们是正确的并与您的实际值相匹配。

哦,作为旁注,我不会忘记,如果您禁用 HTML 输入元素,则在提交表单时,它的值将永远不会发送到服务器。如果您仍然希望在无法修改输入的情况下将值提交给服务器,您可能希望创建它readonly而不是禁用它。

var readonly = this.value == 'defined option';
$('#efgh').prop('readonly', readonly);
于 2012-12-02T15:43:42.310 回答
0

这现在对我有用

$(function() {
    $('#abcd').change(function() {
        if (this.value == 'defined option') {
          $('#efgh').attr('disabled', disabled);
        } else {
          $('#efgh').removeAttr('disabled', disabled);
        }
    });
});
于 2012-12-05T16:13:10.410 回答