You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MVC中使用jQuery判断哪个复选框被选中?

解决复选框选中状态判断问题

我来帮你搞定这个复选框状态判断的需求~你的视图代码没问题,但脚本部分存在两个小问题:一是用$(this).val()拿不到复选框的ID(CheckBoxFor生成的复选框默认value是"true"),二是缺少输出/返回状态的逻辑。咱们来修正一下:

修正后的脚本代码

首先,针对单个复选框变化时返回对应状态的场景:

$('.chk').change(function () {
    // 获取当前触发变化的复选框ID
    const checkboxId = $(this).attr('id');
    // 判断该复选框是否被选中
    const isChecked = $(this).is(":checked");
    // 输出你需要的格式,这里可以根据实际需求改成返回值、提交到后端等操作
    console.log(`${checkboxId}:${isChecked}`);
    // 如果需要返回这个结果,直接return即可
    // return `${checkboxId}:${isChecked}`;
});

额外扩展:一次性获取所有复选框状态

如果你需要一次性获取三个复选框的全部状态(比如点击按钮时),可以用这个函数:

function getCheckboxGroupStatus() {
    const statusMap = {};
    // 遍历所有带chk类的复选框
    $('.chk').each(function() {
        statusMap[$(this).attr('id')] = $(this).is(":checked");
    });
    // 转换成你需要的字符串格式,比如"Group1:true,Group2:false,Group3:true"
    const statusStr = Object.entries(statusMap).map(([key, value]) => `${key}:${value}`).join(',');
    console.log(statusStr);
    return statusStr;
}

关键说明

  • @Html.CheckBoxFor会自动生成一个隐藏域(用于处理未选中时的表单提交),但咱们用.chk类选择的是可见的复选框元素,所以判断逻辑不受影响。
  • 用attr('id')才能正确拿到你给复选框设置的ID(Group1/Group2/Group3),而val()获取的是复选框的提交值,默认是"true",这是原脚本的核心问题。

内容的提问来源于stack exchange,提问作者User9895

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:22:12