需求:在输入框中输入Id后发起后端请求,后端接口返回报错时表单下面提示一个错误信息
实现下图效果:
解决方法:在el-form-item中使用error属性,绑定一个errormsg,当后端有报错时,给该errormsg赋值(注意点是,在blur事件里面要先对errormsg清空,不然同样的只会触发一次报错)
代码如下:
<el-form-item label="商品ID" prop="spuId" :error="errorMsg">
<el-input v-model="form.spuId" class="w300" @blur="getSku()" @input="form.spuId = form.spuId.replace(/[^\d]/g, '')" />
</el-form-item>
```javascript
getSku(val) {
this.errorMsg = '' //这里需要清空下,不然同样的报错只会报一次
const spuId = val || Number(this.form.spuId)
if (!spuId) {
this.errorMsg = '您输入的商品编号有误,请重新输入'
return
}
this.options = []
getSkuDetail({ spuId: spuId }).then(res => {
this.skuVOS = res.data.skuVOS
// 省略一些接口返回后的其他业务代码。。
}).catch(err => {
console.log(err)
this.errorMsg = '您输入的商品编号有误,请重新输入'
})
}
到这里还没有结束,另外有一个需求是验证不满足时没有错误提示,但是要显示红框。
一开始我用同样的方法,但是在errormsg里面传入的是一个空格,在blur方法里面也清空了errormsg的值,但还是只能触发一次红框,最后多次尝试后,添加一个定时器,就能多次显示了:
blurMethod(){
this.errorMsgOther = ''
if(somecode) {
setTimeout(()=>{
this.errorMsgOther = ' '
},300)
}
}```