在日常开发写表单的时候,可能会遇到某一个form-Item中绑定的值不在表单绑定的数据对象中,如:
一般来说,对于时间范围,后端会给两个字段,类似 startTime、endTime。这个时候 时间范围绑定一个dateArr字段来存放一个时间数组
-
此时用prop绑定该字段名是无效的,需要单独对这个字段进行校验。
-
在 form-Item 中有一个属性 error
。用于表单域验证错误信息,设置该值会使表单验证状态变为error,并显示该错误信息。
所以,可以设置一个error属性,初始值设为空,在表单校验时做一个判断,如果字段为空时给error赋值校验失败提示文字。同时加一个失去焦点时的方法 @blur="checkDate"
,在进行表单操作时也做校验。
<el-form-item label="时间范围" :rules="[{ required: true }]" :error="dateError">
<el-date-picker
v-model="dateArr"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
@blur="checkDate"
/>
</el-form-item>
data() {
return {
dateError: '',
dateArr: []
}
},
watch: {
dateArr() {
if (this.dateArr.length > 0) {
this.dataForm.startTime = this.dateArr[0]
this.dataForm.endTime = this.dateArr[1]
} else {
this.dataForm.startTime = ''
this.dataForm.endTime = ''
}
}
},
methods: {
checkDate() {
if (!this.dateArr) {
this.dateError = '请选择时间范围'
} else {
this.dateError = ''
}
},
submit() {
this.$refs['dataForm'].validate((valid) => {
if (!this.dateArr) {
this.dateError = '请选择时间范围'
} else if (valid) {
alert('success')
} else {
console.log('valid err')
}
})
}