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

如何从Easepick中获取选中日期?按文档方法无法实现

解决Easepick无法获取选中日期的问题

你的问题出在事件触发时机不对——onClickCalendarDay是点击单个日期就触发,但在Range模式下,用户需要选完两个日期才算完成范围选择,这时候直接调用getEndDate()可能拿不到正确的值(比如第一次点击时还没有结束日期)。

另外,Easepick的RangePlugin有专门的事件和属性来获取选中的范围日期,调整代码如下:

方法1:使用picker的onChange事件

这个事件会在选中日期(包括范围)确定后触发,能确保拿到完整的选中日期:

var date = new Date();
date.setDate(date.getDate() + 2);

const picker = new easepick.create({
    element: "#datepicker",
    css: [
        "https://cdn.jsdelivr.net/npm/@easepick/bundle@1.2.1/dist/index.css"
    ],
    zIndex: 50,
    lang: "fr-FR",
    format: "DD MMM YYYY",
    header: "Dates de location",
    LockPlugin: {
        minDate: date,
        selectForward: true
    },
    plugins: [
        "RangePlugin",
        "LockPlugin"
    ],
    RangePlugin: {
        locale: {
          one: 'jour',
          other: 'jours',
        },
    },
    // 替换原事件为onChange
    onChange: function (e) {
        // 获取开始和结束日期
        const startDate = picker.getStartDate();
        const endDate = picker.getEndDate();
        console.log("开始日期:", startDate);
        console.log("结束日期:", endDate);
    }
});

方法2:使用RangePlugin的onSelect事件

如果只想监听范围选择的完成事件,也可以在RangePlugin配置里加onSelect:

// ...其他配置不变
RangePlugin: {
    locale: {
      one: 'jour',
      other: 'jours',
    },
    onSelect: function (e) {
        const { startDate, endDate } = this; // this指向RangePlugin实例
        console.log("开始日期:", startDate);
        console.log("结束日期:", endDate);
    }
},

注意点

  • 确保Easepick版本正确(你用的1.2.1是稳定版,没问题)
  • 当用户只选了第一个日期时,endDate会是null,所以实际使用时最好加判断:
if (endDate) {
    // 处理结束日期
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:47:06