1

我在创建的 ASP.NET MVC 页面上有一个复选框,如下所示:

<div>
    @Html.CheckBoxFor(m => m.allUsers, new { Name = "allUsersCheck" })
    @Html.LabelFor(m => m.allUsers)
</div>

我还有一个创建的列表框:

@Html.ListBoxFor(x => x.selectedUsers, Model.ListofUsers, new { style = "width:200px", size = 10, Id = "lbUsers" })

我有以下脚本(我在选中复选框时编写了该脚本以禁用列表框。我不明白为什么它不起作用。有人可以指出我的代码有什么问题吗?

此脚本在同一个 .cshtml 页面中,而不是在 .js 文件中:

<script >

    $(function () {
        $('#allUsersCheck').click(function () {
            $('#lbUsers').prop("disabled", $(this).prop('checked'));
        });
    });

</script>
4

2 回答 2

1

因为您使用的是“#allUsersCheck”的 ID 选择器。与您的列表框(?)不同,该复选框没有 Id 属性。

@Html.CheckBoxFor(m => m.allUsers, new { Name = "allUsersCheck" })

使用 Id 属性尝试以下操作:

@Html.CheckBoxFor(m => m.allUsers, new { Name = "allUsersCheck", Id = "allUsersCheck" })
于 2020-07-24T09:24:39.973 回答
0

好的。我花了一段时间才弄清楚我需要做的事情的全部清单。

这就是我为最终让它工作所做的一切。

  1. 首先,我需要使用这个 jquery 库。
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.js"></script>
  1. 然后我不得不在上面的jquery包含下创建一个函数
<script type="text/javascript">

    $(function () {
        $("#allUsersCheck").change(function () {
            $("#lbUsers").find("option").prop("selected", this.checked)

        });
    });
</script>

在上面您将看到 allUsersCheck 是复选框元素的 id,而 lbUsers 是 ListBoxFor 元素的 id。

  1. 接下来是,在我的 .cshtml 中,我需要使用/创建 listboxfor / checkbox 元素。我就是这样做的
      <b>Users </b><br />
      @Html.ListBoxFor(x => x.selectedUsers, Model.ListofUsers, new { style = "width:200px", size = 10, id = "lbUsers" })
      <br />


      <div>
           @Html.CheckBoxFor(m => m.allUsers, new { id = "allUsersCheck" })
           @Html.LabelFor(m => m.allUsers)
      </div>
 

我还使用 bool 标志作为模型的一部分。allUsers 是标志。控制器代码中的其他内容需要 bool 标志,而不是出于 UI 原因。

我不确定这是否是最好的方法。但这是我可以让它工作的方法。

感谢在这个过程中帮助我完成这项工作的人。显然不是没有他们。

于 2020-07-26T19:26:33.137 回答