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

如何使用jQuery在Django表单中达到勾选上限时动态禁用未选中复选框

实现Django表单复选框动态禁用方案

你可以直接使用如下JS代码实现需求,可自行调整代码中MAX_SELECT常量修改勾选上限:

// 定义最大可勾选数量,可按需修改
const MAX_SELECT = 2;

function updateCheckboxStatus() {
    // 统计当前已勾选的复选框数量
    const checkedCount = $('form input[type="checkbox"]:checked').length;
    if (checkedCount >= MAX_SELECT) {
        // 达到上限时仅禁用未选中的复选框
        $('form input[type="checkbox"]:not(:checked)').prop('disabled', true);
    } else {
        // 未达上限时恢复所有复选框可点击状态
        $('form input[type="checkbox"]').prop('disabled', false);
    }
}

$(document).ready(function() {
    // 页面加载完成后先执行一次,适配后端默认勾选的场景
    updateCheckboxStatus();
    // 绑定复选框点击事件
    $(document).on('click', 'form input[type="checkbox"]', function() {
        updateCheckboxStatus();
    });
});

逻辑说明

  • 选择器限定为form内的复选框,完全适配Django form.as_p的渲染结构,无需修改原有表单模板代码
  • 使用prop方法修改disabled布尔属性,避免attr方法可能出现的状态同步问题
  • 页面加载时自动执行一次状态校验,覆盖后端默认勾选值刚好达到上限的场景

实现效果参考:
示例效果图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:48:02