【问题标题】:show error if none of the checkboxes are selected如果没有选中任何复选框,则显示错误
【发布时间】:2021-12-16 17:21:23
【问题描述】:

我有一堆复选框,如果没有选中,则需要显示警告消息。

像这样,

唯一的规则是,如果没有选中任何复选框,则提交时必须显示如上的警告消息,如果选中任何一个,则不会发出警告。

我的代码:

             <Form.Item
                    name="checkboxes"
                    valuePropName="checked"
                    rules={[
                      {
                        required: true,
                        message: "Please select atleast one working day",
                      },
                    ]}
                  >
                    <Checkbox onChange={this.sun}>Sun</Checkbox>
                    <Checkbox onChange={this.mon}>Mon</Checkbox>
                    <Checkbox onChange={this.tue}>Tue</Checkbox>
                    <Checkbox onChange={this.wed}>Wed</Checkbox>
                    <Checkbox onChange={this.thu}>Thu</Checkbox>
                    <Checkbox onChange={this.fri}>Fri</Checkbox>
                    <Checkbox onChange={this.sat}>Sat</Checkbox>
            </Form.Item>

在上面的代码中,即使单击任何一个复选框,它也会显示警告。

所以,我厌倦了将规则更改为,

            rules={[
              {
                required:
                  this.state.mon &&
                  this.state.tue &&
                  this.state.wed &&
                  this.state.thu &&
                  this.state.fri &&
                  this.state.sat &&
                  this.state.sun === false,
                message: "Please select atleast one working day",
              },

但在上述情况下,如果没有选中任何复选框,它甚至不会显示任何警告消息。

我在 UI 中使用 antd,复选框是从中导入的。 (参考:https://ant.design/components/checkbox/

【问题讨论】:

    标签: reactjs checkbox antd


    【解决方案1】:

    这个条件,你确定吗? false 仅适用于 sun

    this.state.mon &&
    this.state.tue &&
    this.state.wed &&
    this.state.thu &&
    this.state.fri &&
    this.state.sat &&
    this.state.sun === false
    

    您的代码:“如果选择了 6 天并且星期日为假 - 则显示错误消息”

    我猜你需要类似的东西

    
     {
       required: ![this.state.mon, this.state.tue, this.state.wed, this.state.thu, this.state.fri, this.state.sat, this.state.sun].some(d => !!d)
     }
    
    
    

    【讨论】:

    • 是的,没错。该语句仅检查 sun 是否为假
    • 添加!每个语句的前面都解决了这个问题:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多