踩坑el-form :error多次错误信息一致不显示问题

在Vue项目中,遇到el-form-item无法显示错误信息的问题,原因是错误信息未触发watch方法。通过在错误信息末尾添加Math.random().toFixed(2)并后续截取,确保每次错误信息不同,从而强制更新错误状态。代码示例展示了如何在验证失败时设置和清除错误信息,确保el-form-item能正确显示错误提示。

明明可以打印错误信息,但是el-form-item不显示error

经过搜索得知el-form-itemerror属性监听的是watch方法,也就是两次重复的错误操作,提示的错误信息一致,就不会触发watch方法

解决方案,在错误信息增加了Math.random().toFixed(2),在显示的时候再剪掉

<el-form-item label="网络地址" prop="cidr" :error="errorMsg.cidr?errorMsg.cidr.substring(4):''">
                if (!this.subnet.cidr) {
                    this.errorMsg.cidr = Math.random().toFixed(2) + "请输入网络地址"
                } else {
                    if (!this.publicFun.isIpv6Mask(this.subnet.cidr)) {
                        this.errorMsg.cidr = Math.random().toFixed(2) + "请输入正确IPV6地址,示例:2001:DB8:0:0:0:0:0:0/64"
                        console.log(this.errorMsg.cidr)
                    } else {
                        this.errorMsg.cidr = null
                    }
                }

Vue Element UI的`el-form`中,`rules`属性用于定义验证规则,但要确保其生效,你需要按照以下步骤配置: 1. **确保正确嵌套**: `el-form`通常会包裹着`el-form-item`,每个`el-form-item`代表一个字段,`rules`应该针对这些单独的项进行设置[^1]。 ```html <el-form :model="form"> <!-- el-form-item 对应的每个字段 --> <el-form-item label="字段1" prop="field1"> <el-input v-model="form.field1"></el-input> <el-form-item-rules></el-form-item-rules> <!-- 如果有自定义规则 --> </el-form-item> <!-- 类似地添加其他字段 --> </el-form> ``` 2. **验证规则语法**: - 规则是一个对象,每个属性对应一个验证规则,如`required`(必填)、`pattern`(正则匹配)等。 - 使用`validateOnBlur`属性可以控制何时触发验证,如果设为`false`,只有当用户离开输入框时才会进行校验。 ```javascript data() { return { form: { field1: '', // 更多字段... }, rules: { field1: [{ required: true, message: '请输入字段1', trigger: 'blur' }] } }; } ``` 3. **启用全局校验**: 如果整个表单需要立即校验,可以在`el-form`上设置`ref`,然后调用`validate()`方法。 ```javascript methods: { submitForm() { this.$refs.myForm.validate((valid) => { if (valid) { // 提交表单逻辑 } else { console.log('表单验证失败'); } }); } } ``` 4. **注意CSS样式问题**: 如果`label`和`input`元素未在同一行展示,可能是由于默认样式或CSS冲突导致。你可以调整`el-form-item`的样式,比如设置`display: flex`使其并排显示。 确保以上步骤完成后,`rules`应该就能正常生效了。如果有特定的报错信息,检查对应的`$option`错误可能有助于定位问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值