最详细前端vue框架实现结束日期大于开始日期以及计算两个日期天数差

       我这里用的是@change,它是根据焦点来触发的,就是说你的框(输入框或者选择框等)发生变化而且失去焦点(失去焦点就是鼠标从该框上移开并点击别的地方,解释可能不太恰当哈)时触发。

       首先在我们添加或者修改弹出框中的开始日期和结束日期(我这里是出差日期和返差日期)上加上@change="changeStart"和@change="changeEnd",changeStart和changeEnd就是我们的方法名(可自己定义)。(下面的 </el-row>  <el-row>是多余的记得去掉)

复制代码往下看

<el-col :span="12">
            <el-form-item label="出差日期" prop="evectionTime">
              <el-date-picker v-model="form.evectionTime"
              type="date"
              @change="changeStart"
              value-format="yyyy-MM-dd"
              placeholder="请选择出差时间"
              style="width: 100%;" />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="返差日期" prop="backTime">
              <el-date-picker v-model="form.backTime"
              type="date"
              @change="changeEnd"
              value-format="yyyy-MM-dd"
              placeholder="请选择返差时间"
              :clearable="true"
              style="width: 100%;" />
            </el-form-item>
          </el-col>

 接下来就是在method中写我们的方法了

上面的方法给了详细注释下面同理就不再给了。

 代码复制在下图

// 限制选择出差日期
     changeStart() {
        if (this.form.backTime != undefined||this.form.evectionTime != undefined) {
          if (this.form.backTime < this.form.evectionTime) {
            this.$alert("返差日期必须大于或等于出差日期!", { dangerouslyUseHTMLString: true });
            this.form.evectionTime = undefined;
          }
        var ONE_DAY = 1000 * 60 * 60 * 24
          console.log(this.form.backTime)
          var date1_ms = new Date(this.form.backTime).getTime()
          var date2_ms = new Date(this.form.evectionTime).getTime()
          var difference_ms = Math.abs(date1_ms - date2_ms)
          this.form.evectionNumber =Math.round(difference_ms/ONE_DAY+1);
        }
      },
       // 限制选择返差日期
      changeEnd() {
        console.log(this.form.backTime);
        if (this.form.backTime != undefined||this.form.evectionTime != undefined) {
          if (this.form.backTime < this.form.evectionTime) {
            this.$alert("返差日期必须大于或等于出差日期!", { dangerouslyUseHTMLString: true });
            this.form.backTime = undefined;
          }
          var ONE_DAY = 1000 * 60 * 60 * 24
          console.log(this.form.backTime)
          var date1_ms = new Date(this.form.backTime).getTime()
          var date2_ms = new Date(this.form.evectionTime).getTime()
          var difference_ms = Math.abs(date1_ms - date2_ms)
          this.form.evectionNumber =Math.round(difference_ms/ONE_DAY+1);
        }
      },

为什么要写两个?是因为你可能先选开始日期也可能先选结束日期,changeStart()方法是当你先选了结束日期时触发的,changeEnd()方法是你选开始日期时触发的。

效果如下:

这是先选开始日期时,结束日期小于开始日期给的提示。

这是先选结束日期时,开始日期大于结束日期给的提示。

 适合刚入行或者刚开始学的新手小伙伴,希望能对你们有用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值