0

以下のコードを使用して、正しいカルチャの datejs ファイルを呼び出しています。

<script 
type="text/javascript" 
src="<%= ResolveUrl("~/Scripts/Date/date-" + System.Globalization.CultureInfo.CurrentCulture.Name + ".js") %>"></script>

次に、datejs を使用して、関数内でカルチャ固有の書式設定を行います。

dateTextbox.value = today.toString(Date.CultureInfo.formatPatterns.shortDate);

この関数の理由は、日付を選択するためのテキストボックス/カレンダーエクステンダーと、日数を入力するためのテキストボックスがあるためです。一方を変更すると、もう一方がクライアント側を更新して同期を維持します。

私の問題は、datejs を使用しているときに、calendar-extender で必要な元の Date タイプをオーバーライドすることです。そのため、テキストボックスをクリックして日付を選択すると、タイプの不一致が原因でスローされます。

コントロール/ページ全体で使用するのではなく、関数でdatejsのみを使用するようにする方法はありますか、または使用後に(いわば)オフにすることはできますか、またはその他の解決策はありますか?

4

1 に答える 1

0

私はあきらめました...datejsを使用しないことに決めましたが、代わりに、さまざまな言語が必要になるため、新しいスクリプトで独自の関数を使用しています。

これが私が今使っている関数です:

//convert a date into a string in a culture specific format
function FormatDate(thisDate, culture) {

    var date = thisDate.getDate();
    var month = thisDate.getMonth() + 1;
    var year = thisDate.getFullYear();

    var strDate = date.toString();
    if (strDate.length == 1)
        strDate = ("0" + strDate);

    var strMonth = month.toString();
    if (strMonth.length == 1)
        strMonth = ("0" + strMonth);

    culture = culture.toLowerCase();

    switch (culture) {
        case "en-gb":
            return (strDate + "/" + strMonth + "/" + year.toString());
            break;

        case "en-us":
            return (strMonth + "/" + strDate + "/" + year.toString());
            break;

        default:
            return (strDate + "/" + strMonth + "/" + year.toString());
            break;
    }
}

そして、これが私がそれを呼び出す方法です:

var today = new Date();
today = today.getDateOnly();
today.setDate(today.getDate() + commentPeriod);

dateTextbox.value = 
    FormatDate(today, "<%= System.Globalization.CultureInfo.CurrentCulture.Name %>");
于 2013-10-01T10:38:23.800 に答える