最近项目做一个动态表单的增删改查,里面有用到选择日期范围,并且做了表单校验,但是在选择日期范围的时候已经选择到了但是无法在输入框内回显 毫无反应且change事件也处于失效状态。
一、项目实例图片
二、部分代码片
1.el-date-picker
<el-form :model="dynamicForm" ref="dynamicForm" :rules="rules"> //其他属性省略根据自己需求写上
<div v-for="(item, index) in dynamicForm.dataList" :key="index"> // 动态表单
<el-form-item :prop="`dataList[${index}].desc`" :rules="rules.desc">
<el-input v-model="item.desc" type="text" > </el-input>
</el-form-item>
<el-form-item :prop="`dataList[${index}].num3`">
<el-date-picker
v-model="item.num3"
type="monthrange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions"
value-format="yyyy-MM"
format="yyyy-MM"
@input="handleInput($event,index)" // change失效用input代替
>
</el-date-picker>
</el-form-item>
</div>
</el-form>
2.自定义data
data(){
retuen {
rules: {},
dynamicForm:{
dataList: [
num3: [],
desc: ''
]
}
}
}
3.methods
handleInput (val, index) {
if (val) {
// 反显
this.$set(this.dynamicForm.dataList[index].num3, 0, val[0])
this.$set(this.dynamicForm.dataList[index].num3, 1, val[1]) //数组的索引响应式使用$set改变对应值
} else {
// 清空
this.$set(this.dynamicForm.dataList[index].num3, 0, '')
this.$set(this.dynamicForm.dataList[index].num3, 1, '')
}
}