3

我有一个 jQuery 移动日期选择器(就像这里的那个),使用<input type="date" />它需要能够以适当的格式显示日期,具体取决于语言环境。

默认情况下,日期选择器日历以英英式格式的日期显示(dd-mm-yyyy)。有时,该服务将在美国拥有用户,因此希望显示为美国格式(mm-dd-yyyy)

使用globalization culture属性在网站的配置中定义语言环境。理想情况下,日期选择器需要响应配置中的语言环境设置,而不是用户的设置。

因此,这不是语言等的情况。只要选择了日期并将其显示给用户,就可以在输入区域中进行格式化。由于某些本地化功能,在配置中设置文化可以完美地格式化网站上其他地方的日期字符串,当显示为字符串时。仅在日期选择器中这是一个问题。

编辑:所以,问题是 - 是否可以更改 datepicker 输入显示日期的格式?

编辑 2: 再四处看看,似乎日期格式是由用户的本地设置决定的,不能被覆盖。肯定是这样吗?如果是这样,有什么方法可以测试这个功能吗?我尝试将本地设置更改为美国,但到目前为止没有看到输出发生任何变化。如果我知道它以这种方式成功运行,那么运行它可能就足够了。

编辑 3:我现在已经能够成功测试更改本地系统设置时的格式更改。这样做应该没问题。谢谢!

4

3 回答 3

2

稍微研究一下代码(好吧,不是很少,而是很多!),我能够用这段代码解决问题:

/* Brazilian initialisation for the jQuery UI date picker plugin. */
/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */
jQuery(function($){
    $.datepicker.regional['pt-BR'] = {
        closeText: 'Fechar',
        prevText: '&#x3c;Anterior',
        nextText: 'Pr&oacute;ximo&#x3e;',
        currentText: 'Hoje',
        monthNames: ['Janeiro','Fevereiro','Mar&ccedil;o','Abril','Maio','Junho',
        'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
        monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',
        'Jul','Ago','Set','Out','Nov','Dez'],
        dayNames: ['Domingo','Segunda-feira','Ter&ccedil;a-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sabado'],
        dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'],
        dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'],
        weekHeader: 'Sm',
        dateFormat: 'dd/mm/yy',
        firstDay: 0,
        isRTL: false,
        showMonthAfterYear: false,
        yearSuffix: ''
    };

    $.datepicker.setDefaults($.datepicker.regional['pt-BR']);
    $.mobile.date.prototype._setOptions($.datepicker.regional['pt-BR']);
    $(":jqmData(role='date')").datepicker('destroy');
    $(":jqmData(role='date')").datepicker();
});

上面的代码(具有魔力)的重要和附加部分是:

    $.mobile.date.prototype._setOptions($.datepicker.regional['pt-BR']);
    $(":jqmData(role='date')").datepicker('destroy');
    $(":jqmData(role='date')").datepicker();
于 2015-07-16T15:47:19.910 回答
0

如果您使用这个数据选择器直到 JQM 版本 1.1,那么答案是否定的,您可以在其 js 文件中更改 ot 但不能动态更改。

但是看看这个日期选择器。我已经在我的 android/iphone 应用程序上对其进行了测试,它工作得很好,并且可以动态地动态更改。

还有一个DateBox但我没有使用它的经验,它给我带来了一些问题。

于 2012-11-26T10:39:23.457 回答
0

Found out a better solution. Instead of this:

$.mobile.date.prototype._setOptions($.datepicker.regional['pt-BR']);
$(":jqmData(role='date')").datepicker('destroy');
$(":jqmData(role='date')").datepicker();

You can only disable the async loading inserting a "defer" attribute in the script call. For example:

            <script src="/includes/jquery.mobile-1.4.5.min.js"></script>
            <script src="/layout_mobile/js/jquery-ui/datepicker.js" defer></script>
            <script src="/layout_mobile/js/jquery.mobile.datepicker.js" defer></script>
            <script src="/layout_mobile/js/jquery.ui.datepicker-pt-BR.js" defer></script>
于 2015-07-16T18:01:18.257 回答