ant design3.x getFieldDecorator数组对象遇到的表单校验问题(踩坑记录1)

getFieldDecorator(id, options) 参数

其中id是字段对应的key值,必填输入控件唯一标志,options是一个对象里面有很多属性。图里这个FormItem是通过按钮点击弹出输入框 最后显示到AddCatalog组件里面 所以其实事件其实触发不了 百度了很多都没有找到解决方法,最后还是在官方文档发现了setFieldsValue属性,这个属性就是用来动态设置表单值的。

		{
            type != 2 && <Form.Item label="课程目录">
              {
                getFieldDecorator('catalogValue', {
                  initialValue: catalogValue,// 初始值
                  validateTrigger: 'onBlur', // 触发方式
                  rules: [
                    { required: true, message: '请输入课程目录' },
                  ],// 校验规则
                })(
                  <AddCatalog data={catalogList} courseName={title} isNoMore={isNoMore} getCatalog={this.getCatalog} addCatalogClick={this.addCatalogClick} ></AddCatalog>
                  ,)}
            </Form.Item>
            
			// 使用 setFieldsValue 来动态设置课程目录的值 确保不为空
		    this.props.form.setFieldsValue({
		      catalogValue: catalogValue,
		    })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在 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` 方法来进行验证,当验证完成后执行回调函数。你可以在回调函数中处理验证通过和验证失败的情况。 希望以上信息对你有帮助!如果你还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值