如何动态设置 Form.Item 验证所需的规则

2023-12-29

我有一个可以检查或不检查的参数列表。其对应字段的启用/禁用取决于复选框状态。因此,我想在选中参数时启用并验证字段,并在未选中复选框时禁用字段并关闭验证规则。 但我无法切换required规则到false切换复选框时。

正如你所看到的registrations参数未选中,但该字段仍然有验证。

我是这样做的:

<Row key={index} gutter={8}>
  <Col span={6} offset={4}>
    <Form.Item help="">
      <Checkbox
        checked={attribute.isActive}
        disabled={isViewMode}
        onChange={this.handleChangeAttributeActive(attribute.eventId)}
        value={attribute.name}
      >
        {attribute.name}
      </Checkbox>
    </Form.Item>
  </Col>
  <Col span={8}>
    <Form.Item help="">
      {getFieldDecorator(`${attribute.name}`, {
        initialValue: attribute.attributeSendName,
        rules: [{ required: attribute.isActive }],
      })(
        <Input
          disabled={isViewMode || !attribute.isActive}
        />
      )}
    </Form.Item>
  </Col>
</Row>

attributes是存储在组件状态中的参数数组。 复选框处理程序只需切换到相反的位置isActive财产

你能帮忙吗?感谢


validateFields()接受两个参数。您应该提供{force: true}作为正确验证该字段的第二个参数。

handleChangeAttributeActive = e => {
    this.setState(
      prevState => ({
        ...prevState,
        attribute: { ...prevState.attribute, isActive: e.target.checked }
      }),
      () => {
        this.props.form.validateFields([e.target.value], { force: true });
      }
    );
  };

validateFields https://ant.design/components/form/?locale=en-US验证指定字段并获取它们的值 和错误。如果不指定fieldNames参数,则会 验证所有字段。

import { Row, Col, Checkbox, Form, Input } from "antd";

class App extends Component {
  state = {
    attribute: {
      name: "name",
      isActive: true,
      eventId: 1,
      attributeSendName: "enter your name"
    },
    isViewMode: false
  };

  handleChangeAttributeActive = e => {
    this.setState(
      prevState => ({
        ...prevState,
        attribute: { ...prevState.attribute, isActive: e.target.checked }
      }),
      () => {
        this.props.form.validateFields([e.target.value], { force: true });
      }
    );
  };

  render() {
    const { getFieldDecorator } = this.props.form;
    const { attribute, isViewMode } = this.state;
    const index = 0;
    return (
      <div className="App">
        <Row key={index} gutter={8}>
          <Col span={6} offset={4}>
            <Form.Item help="">
              <Checkbox
                checked={attribute.isActive}
                disabled={isViewMode}
                onChange={this.handleChangeAttributeActive}
                value={attribute.name}
              >
                {attribute.name}
              </Checkbox>
            </Form.Item>
          </Col>
          <Col span={8}>
            <Form.Item help="">
              {getFieldDecorator(`${attribute.name}`, {
                message: attribute.attributeSendName,
                rules: [{ required: attribute.isActive }]
              })(<Input />)}
            </Form.Item>
          </Col>
        </Row>
      </div>
    );
  }
}

const WrappedApp = Form.create()(App);

const rootElement = document.getElementById("root");
ReactDOM.render(<WrappedApp />, rootElement);

根据您的需要更改此代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何动态设置 Form.Item 验证所需的规则 的相关文章

  • React Context 的范围是什么?

    我不清楚在哪里Context可以在 React 应用程序中创建 我可以在组件树中的任何位置创建上下文吗 如果可以 该上下文的范围是否仅限于创建它的子级 或者 Context 本质上是全局的 我可以在文档中的哪里找到这个 案例 我在页面上多次
  • 仅使用 Jquery 验证的字母

    我尝试了文章中的每个解决方案one https stackoverflow com questions 4115372 jquery validate plugin adding a custom validator to accept l
  • Redux 状态在 mapStateToProps 中未定义

    我目前正在关注this http teropa info blog 2015 09 10 full stack redux tutorial html教程 我遇到了一些障碍mapStateToProps在下面的代码中 import Reac
  • RegularExpressionValidator 限制输入长度而不限制字符类型

    我正在尝试使用RegularExpressionValidator验证一个TextBox输入长度 我可以使用它 但它只接受字母和数字 我想允许any个字符 唯一的检查是不超过 25 个字符
  • ant-d upload中如何为removeFile添加PopConfirm一个图片文件

    我正在使用 Ant d Upload 通过本地系统上传文件 然后单击文件预览图像上的删除图标 图像文件将被删除 我想添加一个弹出确认 所以我尝试在 onRemovefunction 中添加确认作为承诺但它不起作用 它在浏览器中显示警报 on
  • 在vscode中使用reactjs报错

    在 Visual Studio 代码中使用 jsx 语法 Visual Studio代码报错 请帮我 谢谢 符号 例如 而不是这样做 return lt button className square gt TODO lt button g
  • 如何访问另一个 mobx 商店中的 mobx 商店?

    假设以下结构 stores RouterStore js UserStore js index js each of Store jsfiles 是一个 mobx 存储类 包含 observable and action index js只
  • 如何修复超出最大调用堆栈大小

    有一个 MERN Firebase 应用程序并收到此错误和一堆 atdeepExtend deepCopy ts 71 RangeError Maximum call stack size exceeded getApps as apps
  • Jquery 表单验证 - 电话号码

    我已经在表单上设置了 jQuery 验证 该验证当前测试电话号码字段不为空并且是一个数字 但我希望它能够处理用户在手机 区号后放置空格的情况 谁能建议我需要做什么才能允许这样做 这是我当前的代码 if phone length 0 name
  • 禁用 chrome React DevTools 以进行生产

    我正在尝试使用 gulp 和 envify 对我的 React 应用程序进行浏览器化以设置 NODE ENV 因此 我可以删除反应警告 控制台中的错误报告 甚至我的代码来禁用某些功能 例如react addons perf的要求 而且效果很
  • React.js 和 Ajax 之间的区别

    当我在 google 上搜索 React js 时 我得到的是 React js 是一个用于创建用户界面的框架 如果网站的某个特定部分经常更新 则意味着我们可以使用 React 但我很困惑 Ajax 仅用于此目的 我们可以使用 Ajax 更
  • React:未捕获的引用错误:未定义需求

    我正在阅读 React 教程 http facebook github io react docs animation html http facebook github io react docs animation html 并且我无法
  • Page_ClientValidate 正在验证多次。

    我的问题是 验证摘要消息 警报 显示两次 我无法弄清楚原因 请帮忙 这是代码 function validate javascript function if typeof Page ClientValidate function var
  • 聚合物在核心输入上使用功能验证

    有人可以解释一下如何使用函数验证吗这种聚合物元素 http www polymer project org docs elements core elements html core input 导航到 验证 部分
  • Google 跟踪代码管理器导致 SPA 中的整个页面重新加载 - React

    当我在 React 的 GTM 中添加触发器时 a a or 元素 它会导致单击时重新加载整个页面 而不是仅重新渲染应用程序的一部分 当我删除谷歌跟踪时 一切都会顺利进行 有没有办法 如何配置 GTM 不影响应用程序的行为 如果 Googl
  • CakePHP 中没有模型的简单表单

    我正在尝试在产品页面中添加请求附加信息的表单 这是一个简单的表格 包含姓名 国家 地区 电子邮件和问题字段 我创立了这个tutorial http snook ca archives cakephp contact form cakephp
  • 如何在 React JS 中根据键创建动态表?

    我正在尝试在 React JS 中创建一个动态表组件 该组件当前只有一个静态标头 其中包括最常见的结果键 有些结果还包含更多信息 例如电话号码 学位 如何根据键 值的存在动态地使用附加列扩展表 我应该与state并在存在时使其可见 或者我应
  • 无法处理未捕获的类型错误:无法读取 createRouterReducer 处未定义的属性“位置”

    我在将路由器连接到 rootReducer 时遇到问题 控制台日志 未捕获的类型错误 无法读取未定义的属性 位置 在 createRouterReducer reducer js 005c 9 不知道如何修复它并将路由器连接到减速器 app
  • 诊断 RangeError:React KeyEscapeUtils 中超出了最大调用堆栈大小

    背景 我们的 Web 应用程序是使用官方的 React Redux 绑定用 React 和 Redux 编写的 此网络应用程序中使用的另一个主要库是PaperJS http paperjs org 我们最近将其转变为 Redux 应用程序
  • 如何为 React 组件参数创建文字类型?

    我创建了 SelectProps 界面 export interface SelectProps value string options string onChange value any gt void 我创建了反应组件

随机推荐

  • 如何将一列拆分为按日期排序的多列

    当我尝试以正确的格式获取数据库数据时遇到很多问题 我正在寻找按天按列打印数据库输出的方法 我的数据库有两列 一列带有timestamp格式如下YYYY MM DD H M另一列包含与速度相关的数据 我需要按天将速度数据拆分为列 或多或少 我
  • 具有多维(或非标量)输出的 Scipy 过滤器

    有没有类似的过滤器ndimage s 通用过滤器 http docs scipy org doc scipy reference generated scipy ndimage filters generic filter html支持矢量
  • 我需要对标题属性(工具提示)进行 html 编码吗?

    在我的标记中我使用HTML title attributes我设置的Tooltip各种 ASP NET 控件的属性 例如asp Label 这些标题的内容来自数据库 我使用数据绑定语法 例如
  • Spring 4 Web 套接字 - 我必须有一个 stomp 代理吗?

    我一直在使用以下链接来使用新的 spring 4 websockets http spring io guides gs messaging stomp websocket http spring io guides gs messagin
  • 我的水晶报表在传递参数时没有刷新?

    我已经使用 Crystal Reports 本身中的 SQL 查询创建了 Crystal Reports 通过传递两个参数 即 例如 月和年 当我预览报告时 我可以通过传递不同的参数来浏览所有页面并且其工作正常 但是在通过浏览器查看报告时
  • ng-view 未显示解析

    我以这种方式使用解析 似乎是这样做的标准方法 但视图没有显示 我错过了什么想法吗 此致 angular module fifaApp ngRoute config function routeProvider routeProvider w
  • 如何显示图像的完整尺寸?

    我是新来的 也是 Android 编程新手 我在互联网上的一个网站上找到了这个示例 下面是示例 这是一个很棒的教程 我想要实现的是 当我单击 GridView 上的图片时 我想显示图像的完整大小 public class MainActiv
  • 如何使用 R RDCOMClient 检索 Outlook 收件箱电子邮件?

    library RDCOMClient create outlook object OutApp lt COMCreate Outlook Application 我想从名为 AUX 的 Outlook 文件夹中检索今天的电子邮件 解析电子
  • 在 XML 中使用包名称

    我正在使用 Android Studio 来构建我的应用程序 我想用gradle构建类型 我使用 applicationIdSuffix 在包名称中添加后缀 以修改测试构建类型的包名称 buildTypes debug runProguar
  • 服务工作人员错误:事件已响应

    我不断收到此错误 未捕获 承诺中 DOMException 无法在 FetchEvent 上执行 respondWith 该事件已被响应 我知道如果 fetch 函数中发生异步操作 服务工作人员会自动响应 但我无法完全弄清楚这段代码中的哪一
  • 第一次失败时停止 Fluent Validation

    我正在为我的请求对象定义验证 我希望验证器在第一次失败时停止 而不仅仅是同一条链上的失败 在下面的例子中 如果我的TechnicalHeader对象为空 当验证达到规则时 我收到 NullReference 异常TechnicalHeade
  • 如何将 Flask 静态指向 Amazon S3 URL?

    我有一个在 Heroku 上托管的 Flask 应用程序 但希望从 Amazon S3 提供静态文件 在我的模板中 我使用 url for 来引用静态文件 在 Flask 应用程序的初始化中 我想把 app Flask name stati
  • 为什么要避免使用“是”和“不是”?

    我刚刚开始使用 Python 我的在线教授推荐使用is and is not仅当将值与True False or None 或者至少我是这么理解他所说的话的 现在在我的脑海里 我等同于is使用 JavaScript and is not使用
  • Python 3.x Beautifulsoup 爬取图片url

    我正在尝试使用Python进行图像URL爬行 通过开发工具确认Google图片搜索窗口 图片URL约有100个 向下滚动会出现更多 URL 不过 没关系 问题是我只得到了 20 个 URL 我在 html 文件中打开了一个可寻址请求 我确认
  • 在 Android Studio 单元测试功能中获取 Android TestCase 或 Instrumentation TestCase 中的上下文

    我使用 Android Studio 1 1 0 的新单元测试支持功能运行了一些旧测试 运行 gradlew testDebug 时 测试会运行 但所有需要 Context 的测试都会失败 因为getContext Android测试用例
  • 记录 Sequelize 迁移

    刚刚开始使用 Sequelize 并尝试让迁移工作 并希望了解迁移实际上针对数据库运行的 SQL 我找到了一个github评论 https github com sequelize sequelize issues 610 issuecom
  • 从用 C++ 编写的文件中从 pyarrow 中的字段和架构中读回 KeyValueMetadata

    如果我使用脚本编写一个简单的 Parquet 文件简单写入镶木地板 cpp https gist github com dantrim 33f9f14d0b2d3ec45c022aa05f7a45ee 我希望有一个带有单列的简单 Parqu
  • silverlight 3 中 RadialGradient 画笔颜色的数据绑定

    我正在尝试将 silverlight 3 中 RadialGradientBrush 的颜色数据绑定到属性 但似乎无法让它工作 例如 在示例测试应用程序中 我所拥有的只是
  • 什么是 AutoFixture AutoMoq?

    当我注意到 AutoFixture AutoMoq 时 我正在查看 nuget 并想导入 moq 我看到 AutoFixture 是为了帮助更快地编写 TDD 但我找不到 AutoMoq 的任何示例以及它与 AutoFixture 有何不同
  • 如何动态设置 Form.Item 验证所需的规则

    我有一个可以检查或不检查的参数列表 其对应字段的启用 禁用取决于复选框状态 因此 我想在选中参数时启用并验证字段 并在未选中复选框时禁用字段并关闭验证规则 但我无法切换required规则到false切换复选框时 正如你所看到的regist