javascript - 如何本地化 jQuery UI DateRangePicker?

标签 javascript jquery jquery-ui datepicker daterangepicker

我正在使用 jQuery UI DateRangePicker (reference)。 我希望这个日期范围选择器有 3 种语言版本(荷兰语、法语和英语)。

我将使用 switch 语句来设置日历的设置。

switch(curr_lang) {
        case 'nl':
            moment.locale('nl');
            var daterangepicker = $("#search-vac-daterange").daterangepicker(
                {
                    initialText : 'Selecteer datums',
                    dateFormat: 'd MM yy',
                    datepickerOptions: {
                        minDate: new Date(),
                        startDate: new Date(),
                        maxDate: '+2y'
                    },
                    presetRanges: [{
                        text: 'Vandaag',
                        dateStart: function() { return moment() },
                        dateEnd: function() { return moment() }
                    }, {
                        text: 'Volgende 7 dagen',
                        dateStart: function() { return moment() },
                        dateEnd: function() { return moment().add(7, 'days') }
                    }, {
                        text: 'Volgende 30 dagen',
                        dateStart: function() { return moment() },
                        dateEnd: function() { return moment().add(30, 'days') }
                    }, {
                        text: 'Volgende 6 maanden',
                        dateStart: function() { return moment()},
                        dateEnd: function() { return moment().add(6, 'months') }
                    }, {
                        text: 'Volgend jaar',
                        dateStart: function() { return moment() },
                        dateEnd: function() { return moment().add(1,'years') }
                    }]
                }
            );
            break;
}

日期显示为

18 January 2019 - 17 February 2019

未选择使用 moment 设置的语言环境,结果始终为英语(默认)。

注意:我没有设法让 minDate 和 startDate 与 moment() 一起使用,所以如果有人对此有线索的话。请帮帮我!

最佳答案

所以我建议的是以下示例:

var cl = "en";
$(function() {
  var drp = $("#search-vac-daterange").daterangepicker({
    datepickerOptions: $.extend({
      minDate: new Date(),
      startDate: new Date(),
      maxDate: '+2y'
    }, $.datepicker.regional[cl])
  });
  var cdrp = drp.data("comiseoDaterangepicker");
  console.log(drp, cdrp);
});

工作示例:https://jsfiddle.net/Twisty/c5db9rng/20/

所以这增加了本地化。如果我们查看 DatePicker 示例中的步骤,他们建议执行以下操作:

$( selector ).datepicker( $.datepicker.regional[ "fr" ] );

或者:

$( selector ).datepicker( "option", $.datepicker.regional[ "fr" ] );

Each localization is contained within its own file with the language code appended to the name, e.g., jquery.ui.datepicker-fr.js for French. The desired localization file should be included after the main datepicker code. Each localization file adds its options to the set of available localizations and automatically applies them as defaults for all instances. Localization files can be found at https://github.com/jquery/jquery-ui/tree/master/ui/i18n.

因此,了解这一点也很重要。因此,对于您的代码,我建议如下。

$(function() {
  switch (curr_lang) {
    case 'nl':
      moment.locale('nl');
      var daterangepicker = $("#search-vac-daterange").daterangepicker({
        initialText: 'Selecteer datums',
        dateFormat: 'd MM yy',
        datepickerOptions: $.extend({
          minDate: new Date(),
          startDate: new Date(),
          maxDate: '+2y'
        }, $.datepicker.regional[curr_lang]),
        presetRanges: [{
          text: 'Vandaag',
          dateStart: function() {
            return moment()
          },
          dateEnd: function() {
            return moment()
          }
        }, {
          text: 'Volgende 7 dagen',
          dateStart: function() {
            return moment()
          },
          dateEnd: function() {
            return moment().add(7, 'days')
          }
        }, {
          text: 'Volgende 30 dagen',
          dateStart: function() {
            return moment()
          },
          dateEnd: function() {
            return moment().add(30, 'days')
          }
        }, {
          text: 'Volgende 6 maanden',
          dateStart: function() {
            return moment()
          },
          dateEnd: function() {
            return moment().add(6, 'months')
          }
        }, {
          text: 'Volgend jaar',
          dateStart: function() {
            return moment()
          },
          dateEnd: function() {
            return moment().add(1, 'years')
          }
        }]
      });
      break;
  }
});

半工作示例:https://jsfiddle.net/Twisty/c5db9rng/24/

该示例没有语言文件,因此不会给出正确的结果,但代码按预期工作。

希望对您有所帮助。

关于javascript - 如何本地化 jQuery UI DateRangePicker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54258201/

相关文章:

javascript - 如果字符串不是较大字符串的一部分,则使用 javascript 中的正则表达式替换字符串

javascript - 网站上的大尺寸图像在手机上呈现

javascript - 我怎样才能在点击时制作菜单下拉菜单

javascript - 在 div 内移动图像?

jquery - 使用 jQuery UI 添加另一个图像后删除克隆图像

javascript - 在网页上获取 Surface Pro 3 的高度

javascript - 如何将列表从 C# Angular 传递到 Angular Controller ?

jquery - 使用 jquery 对话框如何应用主题?

jquery - 获取当前选定选项卡的标题(文本)Jquery

javascript - 如何将多个td包含到tr中?