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

如何实现选中两个复选框时禁用第三个?(基于Inputs.checkbox)

实现复选框最多选中2个的限制方案

要实现你需要的「最多选2个,满2个后禁用未选选项,取消一个后恢复可选」的功能,直接用原生Inputs.checkbox的静态配置做不到,得利用Observable的响应式特性动态控制选项的禁用状态,具体实现如下:

完整实现代码

// 定义基础年份列表
const years = ["2020", "2021", "2022"];

// 动态生成带禁用状态的选项
const dynamicYearOptions = {
  get() {
    // 获取当前已选数量
    const selectedCount = year_range.length;
    // 给每个年份设置禁用规则:已选满2个且当前年份未被选中时禁用
    return years.map(year => ({
      name: year,
      disabled: selectedCount >= 2 && !year_range.includes(year)
    }));
  }
};

// 创建响应式复选框
viewof year_range = Inputs.checkbox(dynamicYearOptions, {
  value: ["2020", "2021"], // 初始选中2020和2021
  label: "Year Range"
});

逻辑说明

  • 当已选年份数量达到2时,所有未被选中的年份会被标记为disabled: true,无法再勾选;
  • 一旦取消任意一个已选年份,已选数量回到1,所有被禁用的选项会自动恢复可选;
  • 把选项定义成带get方法的对象,是为了让它自动响应year_range的变化,实时更新每个选项的禁用状态。

更紧凑的写法

如果不想单独定义变量,也可以把动态选项直接写在Inputs.checkbox参数里:

viewof year_range = Inputs.checkbox(
  {
    get() {
      const selectedCount = year_range?.length || 2; // 初始已选2个,确保初始时第三个选项禁用
      return ["2020", "2021", "2022"].map(year => ({
        name: year,
        disabled: selectedCount >= 2 && !year_range?.includes(year)
      }));
    }
  },
  { value: ["2020", "2021"], label: "Year Range" }
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:01:24