【问题标题】:Replace the jquery datepicker dateFormat with momentjs parsing and format用momentjs解析和格式化替换jquery datepicker dateFormat
【发布时间】:2014-07-01 00:10:50
【问题描述】:

为了保持一致性,我希望能够将 JQuery UI 的 datepicker 的解析/格式转换为使用 momentjs。有什么想法可能是最好的方法吗?

【问题讨论】:

  • 一个问题:它是如何处理空值的?它是否显示损坏的日历?

标签: jquery-ui-datepicker momentjs


【解决方案1】:

到目前为止,我发现的最佳方法是覆盖全局 jquery-ui parseDateformatDate 函数,如下所示:

$.datepicker.parseDate = function(format, value) {
    return moment(value, format).toDate();
};
$.datepicker.formatDate = function (format, value) {
    return moment(value).format(format);
};

然后这很好地允许您使用通常的语法将 datepicker 附加到字段,但您指定的格式将改为引用 momentjs 格式而不是 http://momentjs.com/docs/#/parsing/string-format/

$(".selector").datepicker({ dateFormat: "MM-DD-YYYY" });

【讨论】:

  • 太棒了!比其他proposing around 简单得多。谢谢!
  • 不错的解决方案,但缺少第三个参数(设置参数),因此丢失了部分日期选择器功能。
  • @ViRuSTriNiTy - 第三个选项参数仅适用于 jQuery UI 如何解析日期。由于我们在这里用 momentjs 替换了整个解析功能,因此它不适用。例如 momentjs 不会理解 { dayNamesShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"] }。如果你真的想要的话,你也许可以在两者之间写一些东西,但你最好在 momentjs 中全局更改这些设置:momentjs.com/docs/#/i18n/changing-locale
  • 这应该在他们的文件中。感谢您又为我节省了几个小时。
  • @Drasius - 您使用的日期时间选择器完全与此问题中提到的 jquery UI 不同。 jqueryUI 日期选择器:api.jqueryui.com/datepicker 你的:xdsoft.net/jqplugins/datetimepicker 你可能想给那个 Github 存储库的所有者发电子邮件,看看他是否可以帮助你:github.com/xdan/datetimepicker
【解决方案2】:

如果有人使用https://xdsoft.net/jqplugins/datetimepicker 插件并遇到同样的问题,第一个解决方案将是您的选择。 使用接受的解决方案后,您将面临选定日期未突出显示的问题。

因此修改已接受的解决方案以修复选定日期突出显示问题

jQuery.datetimepicker.setDateFormatter({
  parseDate: function (date, format) {
    var d = moment(date, format);
    return d.isValid() ? d.toDate() : false;
  },
  formatDate: function (date, format) {
    if (format == "Y/m/d")
      return moment(date).year() + "/" + moment(date).month() + "/" + moment(date).date();
    return moment(date).format(format);
  }
});

【讨论】:

    猜你喜欢
    • 2013-01-30
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 2015-01-04
    • 1970-01-01
    相关资源
    最近更新 更多