【问题标题】:Selecting last day of week in datetimepicker在 datetimepicker 中选择一周的最后一天
【发布时间】:2020-01-17 07:37:32
【问题描述】:

我正在使用moment.js 尝试选择在datetimepicker 中选择的一周的最后一天,但它会为每周的最后一天返回一个连续循环。我不确定我做错了什么,请有人帮助我。

这是我试过的JS。

JS

$(datePick).on('change.datetimepicker', () => {
    var datetimePicker = $("#datetimepicker1").val();
    lastDate = moment(datetimePicker, "YYYY-MM-DD").day(7).format("YYYY-MM-DD");
    $(datePick).val(lastDate);
});

谢谢!

【问题讨论】:

  • 变量datePick -- 它在哪里定义?这就是我可以看到你从中获得循环的地方。
  • 作为全局变量在函数之外
  • 它有什么价值?
  • var datePick = $("#datetimepicker1");

标签: jquery momentjs tempus-dominus-datetimepicker


【解决方案1】:

在您的示例中,您没有选择一周的最后一天,而是使用moment(...).day(7) 选择下一周的星期日。之后设置值,这将再次触发 on change 功能,将值设置为一周后的星期日。等等……(连续循环)

因此您需要将moment(...).day(7) 更改为moment(...).day(6),这将选择本周的星期六。在第二次尝试中,它不会再次更改值并且循环停止。

如果你想选择下周日作为周末而不是周六,我建议你这样做

$(datePick).on('change.datetimepicker', () => {
    var datetimePicker = $("#datetimepicker1").val();
    if (moment(datetimePicker.day() !== 0) {
        lastDate = moment(datetimePicker, "YYYY-MM-DD").day(7).format("YYYY-MM-DD");
        $(datePick).val(lastDate);
    }
});

【讨论】:

  • 谢谢你成功了! :) 它触发了两次事件会是因为 on 变化吗?由于我住的地方,我需要它是星期天作为一周的最后一天。但是非常感谢!
  • 很高兴它成功了。是的,on 更改触发了第二次执行,但添加的 if 语句阻止了进一步的调用。如果你选择星期天,它只会触发一次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 2020-07-11
  • 2012-12-07
  • 1970-01-01
相关资源
最近更新 更多