3

ロケールに応じて、適切な形式で日付を表示できるようにする必要があるjQueryモバイル日付ピッカー(ここのようなもの)があります。<input type="date" />

デフォルトでは、datepicker カレンダーは、日付を English-UK スタイル形式で表示します(dd-mm-yyyy)。場合によっては、サービスのユーザーが米国にいて、表示を米国の形式にしたい場合があります(mm-dd-yyyy)

ロケールは、globalization culture属性を使用して、Web サイトの構成で定義されます。理想的には、日付ピッカーは、ユーザーの設定ではなく、構成内のロケール設定に応答する必要があります。

したがって、これは言語などの場合ではありません。日付が選択されてユーザーに表示された後の入力領域の書式設定だけです。構成でカルチャを設定すると、一部のローカライズ機能により、文字列として表示されるときに、Web サイトの他の場所で日付文字列をフォーマットするのに完全に機能します。これが問題になるのは日付ピッカーだけです。

編集:それで、質問は-日付ピッカー入力が日付を表示する形式を変更することは可能ですか?

EDIT 2: もう少し調べてみると、日付形式はユーザーのローカル設定によって決定され、オーバーライドできないようです。確かにそうなのでは?もしそうなら、この機能をテストする方法はありますか? ローカル設定を US に変更しようとしましたが、これまでのところ出力に変更はありません。その方法で正常に動作することがわかっている場合は、それで実行するだけで十分かもしれません。

編集 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

より良い解決策を見つけました。これの代わりに:

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

スクリプト呼び出しに「defer」属性を挿入して、非同期ロードのみを無効にすることができます。例えば:

            <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 に答える