【问题标题】:Set valid locale for datetimepicker为 datetimepicker 设置有效的语言环境
【发布时间】:2017-04-20 18:22:25
【问题描述】:

我有一个很奇怪的问题。我正在使用 jQuery 3、Boostrap 3 和这个DateTimepicker。问题是,在第一次尝试的日期时间选择器中,我总是得到无效的语言环境(总是英语),但在第二次尝试(以及进一步)时它是有效的。我的网站的结尾是这样的:

 <script>
    $.when($.ready).then(function () {
        moment().locale('da');

        $('.datetimepicker').datetimepicker({
            locale: 'da',
            viewMode: 'years',
            format: 'YYYY-MM-DD',
            defaultDate: false,
            useCurrent: false,
            viewDate: '1999-04-20'
        });
    })
</script>
</body>
</html>

我添加了这个moment().locale('da');,因为我认为它可以解决问题,但在我的情况下并没有。

任何线索我可以如何强制它使其工作?

如果它很重要,我正在使用 WebPack,我的 JS 文件如下所示:

window.$ = window.jQuery = require('jquery');

require('bootstrap-sass');
require('bootstrap-select');
require('eonasdan-bootstrap-datetimepicker');

var moment = require('moment');
window.moment = moment;

似乎当我更改此文件时:

var moment = require('moment');
window.moment = moment;

var moment = require('moment');
moment.locale('da');
window.moment = moment;

区域设置在第一次尝试时以有效方式设置。不幸的是,我有多种语言,拥有多个 JS 文件只是为了让时刻使用有效的语言环境可能没有多大意义。

有没有办法解决这个问题?

【问题讨论】:

  • Moment 提供了一个 moment-with-locales 文件,其中包含每个支持的语言环境,我不知道如何在 webpack 中使用它,但也许文档中的 this section 可以帮助你。加载所需的语言环境文件后,您可以使用其 locale 函数动态更改 datetimepicker 语言环境。
  • 您能在 JSFiddle 上创建一个重现此问题的演示吗?
  • 顺便说一句,你为什么使用$.when($.ready).then(function () {}) 而不仅仅是$(function() {})
  • @MichałPerłakowski 符号的好点,我不知道,可能在文档的某个地方看到它,并认为必须在 jQuery 3 中使用这种符号(以前我一直在使用 v2)

标签: javascript webpack momentjs datetimepicker eonasdan-datetimepicker


【解决方案1】:

看起来很简单。我用过:

moment().locale('da');

在 JS 控制台中没有导致错误的原因,但要使其正常工作,它必须是

moment.locale('da');

【讨论】:

  • moment().locale('da'); changes locales locally (仅适用于给定的时刻实例)而moment.locale('da'); changes locales globally,这就是你必须使用后者的原因。无论如何,在阅读了你问题的最后一部分之后,我认为你已经尝试过了,但没有运气。
  • @VincenzoC 感谢您的解释。不,我以前没试过(不知道为什么)。我根本不是前端专家:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 2013-01-10
相关资源
最近更新 更多