element表单daterangeChange回显赋值之后重新选择,:rules校验相关不更新值的问题

<el-form-item prop="timeDate" label="时间">

<el-date-picker

v-model="form.timeDate"

@input="daterangeChange" 

value-format="yyyy-MM-dd HH:mm:ss"

type="datetimerange"

range-separator="-"

start-placeholder="开始时间"

end-placeholder="结束时间"

/>

</el-form-item>

一、使用@input保证form表单数据更新

daterangeChange(e){

let _this = this

_this.$nextTick(() => {

_this.$forceUpdate()

})

},

二、在validator中编写自定义校验规则时不使用value,而使用v-model双向数据绑定的值进行判断

timeDate: [

{

required: true,

trigger: "blur",

validator: (rule, value, callback) => {

// 注意这里"value"的值不会及时改变,需要用到双向绑定的值,即"formData.timeDate"

if (

!this.form.timeDate ||

this.form.timeDate.length === 0 ||

this.form.timeDate[0] === "" ||

this.form.timeDate[1] === ""

) {

callback(new Error("请选择时间"));

} else if (

new Date(this.form.timeDate[0]) <= new Date().getTime() + 60 * 10 * 1000 ||

new Date(this.form.timeDate[0]) >=

new Date().getTime() + 60 * 60 * 24 * 30 * 6 * 1000

) {

callback(

new Error(

"开始时间需要在当前时间的10分钟后且不能在6个月后"

)

);

} else if (

new Date(this.form.timeDate[1]) - new Date(this.form.timeDate[0]) < 60 * 30 * 1000 ||

new Date(this.form.timeDate[1]) - new Date(this.form.timeDate[0]) > 60 * 60 * 24 * 1000

) {

callback(

new Error(

"开始时间和结束时间间隔不得短于30分钟,不得超过24小时"

)

);

} else {

callback();

}

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值