javascript - 一个用于禁用某些 CheckBoxFor 的复选框
问题描述
我正在开发一个 MVC 程序。
我在视图中使用Razor语言使用CheckBoxFor显示项目列表(从数据库到控制器/模型):
for (int i = 0; i < Model.ProjectList.Count; i++)
{
@Html.HiddenFor(m => m.ProjectList[i].Id)
<li>@Html.CheckBoxFor(m => m.ProjectList[i].IsChecked,
new { id = "projectList_" + i, className = "CheckBoxProject" })
@Model.ProjectList[i].Name</li>
}
这部分工作正常。
我想添加另一个 CheckBox 以取消选中并禁用以前的 ChekBoxFor 并防止它们被选中。我尝试在视图末尾放置一些 JavaScript 来做到这一点:
<input type="checkbox" id="SetBox" value="SetBox" onclick="CheckBoxState(this);">
<script type="text/javascript" onload="loaded=1">
function CheckBoxState(elementRef) {
document.querySelectorAll('.CheckBoxProject').checked = false;
document.querySelectorAll('.CheckBoxProject').disabled = true;
};
所以如果我明白我做了什么,“onclick”应该调用名为“CheckBoxState”的Javascript函数。然后抓取所有具有类名 CheckBoxProject 的CheckBoxFor,取消选中并禁用它们。
当我在 Firefox 中尝试它时,当我检查最后一个 CheckBox 并且页面检查器显示类似警告(不是英文)时没有任何反应:未能加载源为“ http://localhost:.. ../浏览器链接“
我不确定如何告诉 View 我正在使用 Javascript 以及Razor语言是否能够与Javascript一起使用。
我尝试了不同的方法来编写 JavaScript,具体取决于我在 StackOverflow 上找到的内容,在几次失败后我辞职去问......
解决方案
最后我发现了一些适用于 jQuery 的东西(我不知道):
<input type="checkbox" id="SetBox"> <label>Uncheck and disable other Checkbox</label>
<script type="text/javascript">
// Call function when the element with the id = SetBox is clicked
$('#SetBox').click(function(){
var SetBox = document.getElementById("SetBox");
if (SetBox.checked)
{
// select all checkbox (even SetBox) and unchecked + disabled them
$('input:checkbox').prop('checked', false);
$('input:checkbox').prop('disabled', true);
// select only SetBox and check + enable it.
$('#SetBox').prop('checked', true);
$('#SetBox').prop('disabled', false);
}
else
{
// Make all checkbox available if SetBox is unchecked.
$('input:checkbox').prop('disabled', false);
}
});
它适用于 Html.CheckBoxFor()。
我仍然有警告:无法加载源为“ http://localhost:..../browserLink ”的脚本,但似乎没关系。
我希望这可以帮助以后的人。
推荐阅读
- java - 如何将位图保存在 DCIM 的新文件夹中以在手机的图库中显示(手机没有 SDCard)?
- visual-studio-code - 为什么VS Code的文件夹末尾有感叹号?怎么去掉?
- functional-programming - ((ff) (gg)) 在 AOR 和 NOR 中的减少方式不同吗?
- r - 仅使用 plotly::ggplotly 兼容的几何图形将箱形图放置在多面图的边缘
- javascript - 如何获取使用 DOM 而不是 HTML 创建的元素?
- python - 在python中使用requests.post时如何处理400错误
- dynamic - 如何在 ssis 执行 sql 任务中动态传递数据库名称
- json - 使用 MatTable 更新动态表中的行
- node.js - 2021 年 2 月 15 日之后,我还能将 firebase 云功能迁移到 Node.js 10 吗?
- c# - 根据状态值获取学生列表