You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js如何实现输入送货日期后自动设置提前2天的Knock提醒日期

Vue.js 实现日期联动自动计算的方案

实现思路

通过监听送货日期字段的变化,自动计算出提前2天的提醒日期并赋值即可,以下是完整可运行的代码:

<template> 
<form>   
<label for="">PO Delivery Date</label>
<input
    class="form-control"
    type="date"
    v-model="PO_DeliveryData"
    v-validate="'required'"
    placeholder="PO Delivery Date"
/><br />
    
<label for="">Knock Date</label>
<input
   class="form-control"
   type="date"
   v-model="knock_Date"
   v-validate="'required'"
   placeholder="Knock Date"
/><br />
</form>
</template>
<script>
export default {
  data() {
    return {
      // 初始化两个表单绑定变量
      PO_DeliveryData: '',
      knock_Date: ''
    }
  },
  watch: {
    // 监听送货日期的变化
    PO_DeliveryData(newVal) {
      if (!newVal) {
        // 送货日期为空时清空提醒日期
        this.knock_Date = ''
        return
      }
      // 转换为日期对象计算
      const deliveryDate = new Date(newVal)
      // 往前推2天,单位为毫秒
      const knockDate = new Date(deliveryDate.getTime() - 2 * 24 * 60 * 60 * 1000)
      // 格式化为yyyy-MM-dd格式适配date输入框的取值要求
      this.knock_Date = knockDate.toISOString().split('T')[0]
    }
  }
}
</script>

补充说明

  • 原生type="date"的输入框只识别yyyy-MM-dd格式的字符串,所以计算完日期后需要做格式转换
  • 如果你的项目中用到了dayjs、moment等日期处理库,也可以直接用库的API做日期计算,代码会更简洁,比如用dayjs的话,计算逻辑可以写成this.knock_Date = dayjs(newVal).subtract(2, 'day').format('YYYY-MM-DD')

内容的提问来源于stack exchange,提问作者alprazolam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:57:00