checkbox表单校验 至少选中一个Checkbox , 否则会报错

news2024/11/28 16:44:03

项目背景 :  react + ant
需求 : 需实现至少选中一个Checkbox , 否则会报错
需求如下 : 


注意 : Input, Select, DatePicker可以直接处理Form.Item的验证规则 ,  但Checkbox不行 , 需自定义验证规则

实现 : 

 

  // 自定义的checkbox校验规则--星期
  const validateAtLeastOneCheckbox = (_, value) => {
    // 假设 isChecked1-7 是您在外部维护的state,反映了Checkbox的选中状态
    const isCheckedArray = [
      isChecked1,
      isChecked2,
      isChecked3,
      isChecked4,
      isChecked5,
      isChecked6,
      isChecked7
    ]
    const isSelected = isCheckedArray.some(Boolean) // 检查是否有至少一个为true

    if (!isSelected) {
      // 如果没有选中任何一项,则返回错误信息
      return Promise.reject(new Error('请选择至少一个备份周期'))
    }
    return Promise.resolve()
  }


<Form.Item
                  colon={false}
                  label={t('backupsTOP9')}
                  className='time'
                  name='week'
                  rules={[
                    {
                      validator: validateAtLeastOneCheckbox,
                      message: '请选择备份周期'
                    }
                  ]}
                >
                  <div className='' style={{ width: 1100 }}>
                    <Checkbox
                      checked={isChecked1}
                      onChange={e => {
                        setIsChecked1(e.target.checked)
                      }}
                      style={{ marginLeft: 60, fontSize: 16, width: 80 }}
                    >
                      {t('backupsTOP10')}
                    </Checkbox>
                    <Checkbox
                      checked={isChecked2}
                      onChange={e => {
                        setIsChecked2(e.target.checked)
                      }}
                      style={{ marginLeft: 60, fontSize: 16, width: 80 }}
                    >
                      {t('backupsTOP11')}
                    </Checkbox>
                    <Checkbox
                      checked={isChecked3}
                      onChange={e => {
                        setIsChecked3(e.target.checked)
                      }}
                      style={{ marginLeft: 60, fontSize: 16, width: 80 }}
                    >
                      {t('backupsTOP12')}
                    </Checkbox>
                    <Checkbox
                      checked={isChecked4}
                      onChange={e => {
                        setIsChecked4(e.target.checked)
                      }}
                      style={{ marginLeft: 60, fontSize: 16, width: 80 }}
                    >
                      {t('backupsTOP13')}
                    </Checkbox>
                    <Checkbox
                      checked={isChecked5}
                      onChange={e => {
                        setIsChecked5(e.target.checked)
                      }}
                      style={{ marginLeft: 60, fontSize: 16, width: 80 }}
                    >
                      {t('backupsTOP14')}
                    </Checkbox>
                    <Checkbox
                      checked={isChecked6}
                      onChange={e => {
                        setIsChecked6(e.target.checked)
                      }}
                      style={{ marginLeft: 60, fontSize: 16, width: 80 }}
                    >
                      {t('backupsTOP15')}
                    </Checkbox>
                    <Checkbox
                      checked={isChecked7}
                      onChange={e => {
                        setIsChecked7(e.target.checked)
                      }}
                      style={{ marginLeft: 60, fontSize: 16, width: 80 }}
                    >
                      {t('backupsTOP16')}
                    </Checkbox>
                  </div>
                </Form.Item>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1815895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CP AUTOSAR标准中文文档链接索引

AUTOSAR标准的核心组件包括通信、诊断、安全等&#xff0c;这些组件通过模块化结构进行组织。系统被划分为多个模块&#xff0c;每个模块负责特定的功能。模块之间通过接口进行通信&#xff0c;接口定义了模块之间的交互规则。AUTOSAR标准支持模块的配置&#xff0c;可以根据不…

加密经济时代:Web3如何改变我们的生活方式

随着区块链技术的蓬勃发展和加密经济的兴起&#xff0c;Web3正逐渐成为数字化时代的主流趋势之一。作为下一代互联网的代表&#xff0c;Web3以其去中心化、安全可信的特性&#xff0c;正在改变着我们的生活方式。本文将深入探讨加密经济时代下&#xff0c;Web3如何改变了我们的…

形如SyntaxError: EOL while scanning string literal,以红色波浪线形式在Pycharm下出现

背景&#xff1a; 新手在学习Python时可能会出现如下图所示的报错 下面分情况教大家如何解决 视频教程【推荐】&#xff1a; 形如SyntaxError: EOL while scanning string literal&#xff0c;以红色波浪线形式在Pycharm下出现 过程&#xff1a; 问题概述&#xff1a; 简单…

鸿蒙开发文件管理:【@ohos.securityLabel (数据标签)】

数据标签 该模块提供文件数据安全等级的相关功能&#xff1a;向应用程序提供查询、设置文件数据安全等级的JS接口。 说明&#xff1a; 本模块首批接口从API version 9开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import security…

C# WinForm —— 34 ToolStrip 工具栏 介绍

1. 简介 工具栏 ToolStrip&#xff0c;一般紧贴在菜单栏下面 2. 属性 属性解释(Name)控件ID&#xff0c;在代码里引用的时候会用到Enabled控件是否启用Dock定义要绑定到容器的控件边框&#xff0c;默认是topAnchor定义某个控件绑定到的容器的边缘。当控件锚定到某个边缘时&a…

C++基础编程100题-009 OpenJudge-1.3-07 计算多项式的值

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0103/07/ 描述 对于多项式 f ( x ) a x 3 b x 2 c x d f(x) ax^3 bx^2 cx d f(x)ax3bx2cxd 和给定的a, b, c, d, x&#xff0c;计算f(x)的值。 输入 输入仅一行&#xff0c;包含5个实数&#xff0c;分…

LeetCode | 66.加一

这道题有多个思路&#xff0c;可以依次取数组的每一位&#xff0c;乘10后加下一位&#xff0c;直到最后一位&#xff0c;就得到我们数组所表示的数字&#xff0c;然后加一&#xff0c;然后把新得到的数字再转化为对应的数组&#xff0c;我的做法是直接取数组的最后一位&#xf…

redis 07 订阅

订阅频道 订阅模式&#xff1a; 解释&#xff1a;

MSPM0L1306时钟树

图显示了MSPM0Lxx系列设备的顶级时钟树。此图显示映射 振荡器&#xff08;源&#xff09;和时钟&#xff08;目的地&#xff09;之间&#xff0c;以及的SYSCTL寄存器位字段 选择多路复用器。请注意&#xff0c;并非所有设备都具有图所示的所有时钟系统功能。

【Linux】模拟实现一个简单的日志系统

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

权限维持--小结

权限维持 windows 域环境 基于验证 DLL 加载-SSP 基于验证 DLL 加载-HOOK 基于机制账号启用-DSRM 基于用户属性修改-SID-history 基于登录进程劫持-Skeleton-Key 单机 基于用户-隐藏用户 基于服务 TGT-黄金白银票据 基于软件-GotoHTTP&RustDesk 自启动 粘滞键 …

RERCS系统开发实战案例-Part03 创建Web Dynpro对应的FPM Application

1、通过事务码SE80 资源浏览器创建 2、通过事务码FPM_WB在WEB端创建 3、创建FPM Application步骤 1&#xff09;选择&#xff1a;在业务实体上创建FPM应用程序的向导&#xff1b; 2&#xff09;配置&#xff1a;输入平面布置对象&#xff1b; 3&#xff09;单击 下一个&#…

美业SaaS收银系统拓客系统源码分享-预约管理功能的作用和重要性

美业收银管理系统对于美容、美发、医美行业的门店来说至关重要&#xff0c;它不仅可以帮助提高管理效率和降低成本&#xff0c;还可以改善客户体验并促进业务增长。 &#xff08;私信获取源码/演示视频&#xff09; ▶ 美业系统中的【预约管理】有多种作用&#xff0c;包括&…

业务架构的位置及关系

背景 我们已经了解了业务架构的核心元素组成&#xff0c;以及各个扩展元素&#xff0c;同时对各个元素的关系协同也有了一些了解&#xff0c;那么接下来&#xff0c;我们进一步在宏观层面来看业务架构与其他架构的关系。 企业架构 企业架构有多种理解&#xff0c;也有多种叫…

kotlin 中的数字

以下均来自官方文档&#xff1a; 一、整数类型 1、kotlin中内置的整数类型&#xff0c;有四种不同大小的类型&#xff1a; 类型存储大小&#xff08;比特数&#xff09;最小值最大值Byte8-128127Short16-3276832767Int32-2,147,483,648 (-231)2,147,483,647 (231 - 1)Long64…

(Git)多人协作1

文章目录 前言总结 前言 目标&#xff1a;master分支下file.txt文件新增“aaa”,“bbb” 实现&#xff1a;开发者1新增“aaa”,开发者2新增“bbb” 条件&#xff1a;在同一个分支下协作完成 实际开发过程中&#xff0c;每个用户都与属于自己的码云账户&#xff0c;如果想要进…

闪烁与常亮的符号状态判断机制(状态机算法)

背景说明 在视觉项目中&#xff0c;经常要判断目标的状态&#xff0c;例如&#xff1a;符号的不同频率闪烁、常亮等。然而常规的视觉算法例如YOLO&#xff0c;仅仅只能获取当前帧是否存在该符号&#xff0c;而无法对于符号状态进行判断&#xff0c;然而重新写一个基于时序的卷积…

9 - 上升的温度(高频 SQL 50 题基础版)

9 - 上升的温度 -- 找出与之前&#xff08;昨天的&#xff09;日期相比温度更高的所有日期的 id -- DATEDIFF(2007-12-31,2007-12-30); # 1 -- DATEDIFF(2010-12-30,2010-12-31); # -1select w1.id from Weather w1, Weather w2 wheredatediff(w1.recordDate,w2.recordDat…

Android Studio项目升级报错:Namespace not specified

原项目升级AGP到8.0时报错&#xff1a; Namespace not specified. Specify a namespace in the modules build file: C:\Users\Administrator\Desktop\MyJetpack\app\build.gradle. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about…

准研究生了解内容:如何挑选论文并下载

本文主要纪录自己从0开始摸索如何找论文&#xff0c;下载论文等的过程。 前言 &#xff08;一点想法&#xff09;## 作为准研究生&#xff0c;上岸后一直非常颓废&#xff0c;除了给人补课挣了点money&#xff0c;剩下时间都是打游戏&#xff0c;被老姐训诫后决定继续学习。毕…