当前的校验方式:
imgs: [
{ required: true, message: '请上传图片', trigger: 'blur' },
],
上传完成图片虽然不可以通过form表单验证,但是在参数中是可以看到是有值的。
<el-form-item label="图片" prop="imgs" ref="headimgUpload">
<el-upload
class="upload-demo"
drag
accept=".jpg, .jpeg, .png"
action=""
:on-change="方法名"
:auto-upload="false"
:show-file-list="false">
</el-upload>
方法名 (file) {
//图片上传处理方法
// 等待照片上传成功后,清除对照片的非空校验
this.$nextTick(() => {//等待照片上传完成,
this.$refs['headimgUpload'].clearValidate()
})
},
validator验证器,可以对格式进行复杂限制,
跟rule一样需要设置对应表单项的prop属性,然后绑定validator,validator绑定验证规则变量(注意验证规则变量是处在data的return外面)
imgs: [
// { required: true, message: '请上传应用封面', trigger: 'blur' },
{ validator: (rule, value, callback) => { validator方法名()(rule, value, callback) }, message: '请上传图片', trigger: 'blur' }
],
//方法就放在这里展示了 //这个方法要在data里 renturn 外面
data () {
let validator方法名= function () {
return (rule, value, callback) => {
if (!value) {
return callback(new Error(rule.message))
}
//判断参数是否有长度,有长度表示不为空,我是把图片转成的字节
const valid = value.length > 0
if (valid) {
return callback()
} else {
return callback(new Error(rule.message))
}
}
}
}
return {
}
弄完之后,继续测试是否可以正常提交,发现还是不行,(由于我把清除图片校验的那一段注释了),纠结了一小会,又把清除上传图片校验的方法放开,继续操作,正常提交成功了。