antd - Form.getFieldDecorator里面的rules可否用自定义方法来进行validate

查看:1193
本文介绍了antd - Form.getFieldDecorator里面的rules可否用自定义方法来进行validate的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

一些比较复杂的验证逻辑,感觉用正则表达式搞不定,如何自定义验证方法?
官网文档里面说要参考async-validate库的规则,但是今天研究了半天还是没弄明白,请高人给解释一下,多谢了!

解决方案

看了下rc-form的源码,自己解决了。
rules数组里面的元素可以是方法,具体参数见下面源码。
我的目的是验证多重选择框中,确保每一个元素都是个数字。正则比较low,不要在意。

        <FormItem {...formItemProps}>{
          this.props.form.getFieldDecorator("args", {
            initialValue: value || [],
            rules: [
              (rule, value, callback, source, options) => {
                const errors = []
                value.every(v => {
                  if (!/^-?[0-9.]+$/.test(v)) {
                    errors.push(new Error(v + '不是合法数值', rule.field))
                    return false
                  }
                  return true
                })
                callback(errors)
              }
            ]
          })(<Select size="default" tags tokenSeparators={[',', ' ', ';']}></Select>)
        }</FormItem>

这篇关于antd - Form.getFieldDecorator里面的rules可否用自定义方法来进行validate的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆