ant4 多个form 验证_AntDesign Form表单字段校验

1.使用getFieldDecorator的rules规则

最简单的方法就是使用getFieldDecorator中的rules验证。rules中定义校验规则,message为校验不通过时的提示文字。

{getFieldDecorator('inputContent', {

rules: [{

required: true,

message: '请输入内容!',

}],

})(

)}

rules校验规则

参数

说明

类型

默认值

enum

枚举类型

string

-

len

字段长度

number

-

max

最大长度

number

-

message

校验文案

string

ReactNode

min

最小长度

number

-

pattern

正则表达式校验

RegExp

-

required

是否必选

boolean

false

transform

校验前转换字段值

function(value) => transformedValue:any

-

type

内建校验类型,可选项

string

'string'

validator

function(rule, value, callback)

-

whitespace

必选时,空格是否会被视为错误

boolean

false

2.使用getFieldDecorator的validator自定义校验

validator可以自定义校验规则,适用于无法用rules校验规则校验的情况,比如校验再次输入密码与前一次输入的密码是否相同。其中,参数val为输入的值,callback必须被调用,是校验失败时的回调,内容为提示文字。

handleValidator = (rule, val, callback) => {

if (!val) {

callback();

}

let validateResult = ...; // 自定义规则

if (!validateResult) {

callback('请输入正确的内容!');

}

callback();

}

{getFieldDecorator('validator', {

rules: [{

required: true,

message: '请输入内容'

}, {

validator: this.handleValidator

}]

})(

)}

注意:一个 Form.Item 建议只放一个被 getFieldDecorator 装饰过的 child,当有多个被装饰过的 child 时,help required validateStatus 无法自动生成。此时可用下面一种方法校验。

3.使用validateStatus自定义校验

antd提供了validateStatus,help,hasFeedback 等属性,你可以不需要使用 Form.create 和 getFieldDecorator,自己定义校验的时机和内容。

validateStatus: 校验状态,可选 'success', 'warning', 'error', 'validating'。

hasFeedback:用于给输入框添加反馈图标。

help:设置校验文案。

{...formItemLayout}

label="Success"

hasFeedback

validateStatus="success"

>

{...formItemLayout}

label="Warning"

hasFeedback

validateStatus="warning"

>

{...formItemLayout}

label="Fail"

hasFeedback

validateStatus="error"

help="Should be combination of numbers & alphabets"

>

可用属性

参数

说明

类型

默认值

colon

配合 label 属性使用,表示是否显示 label 后面的冒号

boolean

true

extra

额外的提示信息,和 help 类似,当需要错误信息和提示文案同时出现时,可以使用这个。

string

ReactNode

hasFeedback

配合 validateStatus 属性使用,展示校验状态图标,建议只配合 Input 组件使用

boolean

false

help

提示信息,如不设置,则会根据校验规则自动生成

string

ReactNode

label

label 标签的文本

string

ReactNode

labelCol

label 标签布局,同

组件,设置 span``offset值,如 {span: 3, offset: 12}或 sm: {span: 3, offset: 12}

required

是否必填,如不设置,则会根据校验规则自动生成

boolean

false

validateStatus

校验状态,如不设置,则会根据校验规则自动生成,可选:'success' 'warning' 'error' 'validating'

string

wrapperCol

需要为输入控件设置布局样式时,使用该属性,用法同 labelCol

注意: 这种校验方法有一个不足之处,就是不使用getFieldDecorator的话没办法设置字段名,获取输入的值的时候不能用getFieldsValue和setFieldsValue等方法对表单进行赋值和取值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Vue 3 中使用 Ant Design Vue 的 Form 表单组件进行确认密码校验,你可以自定义校验规则来实现。下面是一个示例: ```vue <template> <a-form ref="form" :model="formData"> <a-form-item label="密码" name="password" rules="required"> <a-input type="password" v-model="formData.password" /> </a-form-item> <a-form-item label="确认密码" name="confirmPassword" rules="required,checkPassword"> <a-input type="password" v-model="formData.confirmPassword" /> </a-form-item> <a-form-item> <a-button type="primary" @click="submitForm">提交</a-button> </a-form-item> </a-form> </template> <script> import { ref } from 'vue'; import { Form, Input, Button, message } from 'ant-design-vue'; export default { components: { 'a-form': Form, 'a-form-item': Form.Item, 'a-input': Input, 'a-button': Button }, setup() { const formRef = ref(null); const formData = ref({ password: '', confirmPassword: '' }); const checkPassword = (_, value) => { if (value !== formData.password) { return Promise.reject(new Error('两次密码输入不一致')); } return Promise.resolve(); }; const submitForm = () => { formRef.value.validate((valid) => { if (valid) { // 验证通过,执行表单提交操作 console.log('表单验证通过'); // ... } else { console.log('表单验证失败'); } }); }; return { formRef, formData, checkPassword, submitForm }; } }; </script> ``` 在上述示例中,我们在确认密码字段的 `a-form-item` 组件上定义了一个名为 `checkPassword` 的校验规则。该规则使用了一个自定义校验函数,并在函数内部判断确认密码是否与密码字段的值相同。如果不相同,我们使用 `Promise.reject` 返回一个错误信息,表示校验失败;如果相同,我们使用 `Promise.resolve` 表示校验通过。 然后,我们将这个校验规则 `checkPassword` 应用到确认密码字段的 `rules` 属性中,通过逗号分隔多个规则。注意,我们还将 "required" 规则也应用到了确认密码字段上,以确保确认密码不能为空。 在 `submitForm` 方法中,我们使用 `formRef.value.validate` 方法来进行表单验证,当验证完成后执行回调函数。你可以在回调函数中处理验证通过和验证失败的情况。 希望以上信息对你有帮助!如果你还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值