vue3 element-plus from表单验证数组,当鼠标失去焦点时,message并没有消失。
html部分
form-item label="广告头图" prop="adBanner">
"black"
label="图片上传"
v-model:list="ruleForm.adBanner"
/>
form-item>
ts部分
const ruleForm = reactive({
adBanner: [],
});
const rules = reactive({
adBanner: [
{ type: 'array',required: true, message: '请上传图片', len: 1 ,trigger: 'blur'},
],
});
首次没上传图片时,点击校验
提示我请上传图片,没问题。
上传一张图片
此时已经上传了一张图片,当我鼠标焦点时,是不是应该校验通过,message消失呢
此时手动触发校验
手动触发校验后,message消失
我猜测校验规则没有问题,关键是在trigger属性上,当使用‘blur’时,我鼠标失去焦点,并没有触发校验规则 ,后来‘change’ 我都试了也时不好用的。 然后我换了一个普通的from,只是一个普通的input框,对string类型校验时,blur好用。
想要的效果就是当我上传图片后,失去焦点时,触发校验,message消失
谢谢
ruleForm.adBanner
这个变量的值,所以页面上输出看看,当选择图片的时候这里的变量是否有值,因为有可能是你组件里面有值,但并没有传回给当前这个变量
el-form 表单输入元素后,会触发上层的 el-form-item组件的 对应事件,此处你用的封装的组件,无法触发到,可以监听 ruleForm.adBanner 的变化,然后 触发 el-form-item的 对应rules绑定的触发事件类型;
<el-form-item label="广告头图" prop="adBanner">
<user-uploader
v-model:list="ruleForm.adBanner"
text-color="black"
label="图片上传"
ref="adBanner"
/>
</el-form-item>
watch: {
'ruleForm.adBanner'() {
this.$refs.adBanner.$emit('el.form.blur')
}
},