Vue中使用ref、$refs绑定到form、fromItem,动态修改表单验证项和校验提示信息

Vue中使用ref、$refs绑定到form、fromItem,动态修改表单验证项和校验提示信息

转载请注明出处,原创不易,
需求是这样的, 要根据不同类型展示不同的表单项, 带验证的表单项也不一样, 当时就看了关于验证的一些方法还有github,无奈看不明白,就突然想到了ref属性,就打印看了一下,一番寻找,果然让我给找到了,嘿嘿,先上图看一看
这是打印的ref绑定的formItem属性
然后进入到form对象中,是这样的
这是form对象里的属性
然后再点击rules, 展开他
红色框里的属性就是我们需要的
然后点开rules,里面是这个表单里所有待验证的prop项
在这里插入图片描述
里面的message, required, trigger,就是我们绑定在表单里的rules
在这里插入图片描述

然后就可以动态的修改成你想要的

// 比如切换的时候,我去掉一个带验证的表单项的验证
this.$refs.accessPrefix.form.rules.ACCESS_PREFIX[0].required = false
后来对比了一下,第一张图片里的isRequired
this.$refs.accessPrefix.isRequired = false
 // 这两行代码的效果一样,可以不用往里找那么深,当然你要是不放心,
 可以用上面第一行的代码

如果要修改错误提示信息, 看图
这是修改前的校验提示信息
下面的是修改后的提示信息
这是修改后的校验提示信息
这个就用到了第一张图里的validateMessage属性

// 两行代码搞定
this.$refs.applicationName.validateMessage = '应用部署单元名称不能为空'
this.$refs.applicationName.form.rules.APPLICATION_NAME[0].message = '应用部署单元名称不能为空'

然后,切换回去的时候在改回去就行了

this.$refs.applicationName.validateMessage = '应用名称不能为空'
this.$refs.applicationName.form.rules.APPLICATION_NAME[0].message = '应用名称不能为空'

但是只修改this.$refs.applicationName.form.rules.APPLICATION_NAME[0].message这个属性的话,不会实时更新视图,因为这个form里面的属性需要触发一下验证才会更新视图, 所以就需要直接去修改验证后的信息,也就是修改validateMessage的值即可.
第一次碰到这个问题,在次记录一下

Vue3 Element Plus是一套基于Vue3的UI组件库提供了丰富的组件和功能,其包括了Form表单组件。在Element Plus,可以通过动态校验来实现同一字段的表单动态校验。 在Vue3 Element Plus,可以使用`el-form`组件来创建表单,通过`el-form-item`组件来包裹表单。要实现同一字段的表单动态校验,可以使用`rules`属性来定义校验规则。 首先,需要在Vue组件定义表单数据和校验规则。例如: ```javascript data() { return { form: { field1: '', field2: '' }, rules: { field1: [ { required: true, message: '字段1不能为空', trigger: 'blur' }, // 其他校验规则 ], field2: [ { required: true, message: '字段2不能为空', trigger: 'blur' }, // 其他校验规则 ] } } } ``` 然后,在模板使用`el-form`和`el-form-item`组件来创建表单,并绑定数据和校验规则。例如: ```html <template> <el-form :model="form" :rules="rules" ref="form"> <el-form-item label="字段1" prop="field1"> <el-input v-model="form.field1"></el-input> </el-form-item> <el-form-item label="字段2" prop="field2"> <el-input v-model="form.field2"></el-input> </el-form-item> </el-form> </template> ``` 最后,可以通过调用`validate`方法来触发表单校验。例如: ```javascript methods: { submitForm() { this.$refs.form.validate((valid) => { if (valid) { // 校验通过,提交表单 } else { // 校验不通过,处理错误信息 } }); } } ``` 这样,就可以实现同一字段的表单动态校验了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值