【问题标题】:Disable CheckBox if defined option of DropDownList is selected如果选择了 DropDownList 的定义选项,则禁用 CheckBox
【发布时间】:2012-12-02 15:40:39
【问题描述】:

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

如你所见,我使用的是剃须刀

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

【问题讨论】:

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


    【解决方案1】:

    我想到了某事。像这样:

    不,您应该考虑使用 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);
    

    【讨论】:

    • 感谢您的回复。所以我必须添加一个新的 .js 文件并将其导入到我的 .cshtml 中: 对吗?
    • 不,不要将 URL 硬编码到您的脚本中。使用 url helper 来引用它:<script src="@Url.Content("~/Scripts/script.js")" type="text/javascript"></script>.
    【解决方案2】:

    这对我有用

    $(function() {
        $('#abcd').change(function() {
            if (this.value == 'defined option') {
              $('#efgh').attr('disabled', disabled);
            } else {
              $('#efgh').removeAttr('disabled', disabled);
            }
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-26
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 2015-11-16
      相关资源
      最近更新 更多