2



12を超える日付を選択すると、Chrome で検証メッセージが表示されます

var abc = $("#culture").val();
        $.datepicker.setDefaults($.datepicker.regional[""]);

        $("#dob").datepicker({
            changeMonth: true,
            changeYear: true,
            dateFormat: 'dd-mm-yy',
            yearRange: '-90:-15',
            defaultDate: '-90y'

        });
        $.datepicker.setDefaults($.datepicker.regional[abc]);


別の問題:コントローラーで望ましくない形式の日付を取得しています。そのため、データベースに間違ったエントリが保持されています(月の代わりに日付、日付の代わりに月)..可能な解決策を提案してください...

私が見つけた関連性はLINK 1です

リンク2

リンク 3

しかし、上記のどれも機能しません...

4

4 に答える 4

0

これを試して:

$("#dob").datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: 'mm-dd-yy',
    yearRange: '-90:-15',
    defaultDate: '-90y'
});  

var abc = $("#culture").val();  

$("#dob").datepicker("setDate", new Date(abc));

$("#dob").datepicker({
    changeMonth: true,
    changeYear:  true,
    dateFormat:  'dd-mm-yy',
    yearRange:   '-90:-15',
    defaultDate: '-90y'
});

それ以外の場合は、日付を文字列として取得してから、必要な形式に変換できます。

jQuery で実行している場合は、datepicker UI ライブラリのparseDate関数を使用して、文字列を日付に変換できます。

var d = $.datepicker.parseDate("DD, MM dd, yy",  "Sunday, February 28, 2010");

そして、それをformatDateメソッドでフォローアップして、必要な文字列形式にします。

var datestrInNewFormat = $.datepicker.formatDate( "mm/dd/yy", d);

もちろん、jQuery を使用していない場合は、jQuery コアと datepicker UI モジュールが必要であることを考えると、おそらく最良の計画ではありません... 上記の Segfault からの提案に従って、date.js を使用するのが最善です。

于 2012-05-30T12:52:12.367 に答える
0

解決策はそれほど単純ではありません。最終的には jquery 検証ルールをオーバーライドする必要があります。ここMVC 3 jQuery Validation/globalizing of number/decimal fieldで説明されているように、Globalizeプラグインを使用することをお勧めします

于 2013-06-26T13:54:55.083 に答える
0

まず、MVC を使用していて、サーバーからの日付を表示する場合は、次のように日付を表​​示する必要があります。

@Html.TextBox("InsertDate", Model.InsertDate.ToString("dd/MM/yyyy"), new { @class = "date" })

そしてあなたのjqueryでは:

$('.date').datepicker({ dateFormat: "dd/mm/yy" }).val();

カルチャが en-US の場合、ModelState.IsValid は壊れます。これに対する汚いハックは次のようなものです:

var insertDateStr = ModelState.Values.ToList()[3].Value.AttemptedValue;
var insertDate = DateTime.ParseExact(insertDateStr, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None);

最後に、クロムの赤の場合は、テキストボックスのスタイルで背景色の白を追加するだけです.

@Html.TextBox("InsertDate", Model.InsertDate.ToString("dd/MM/yyyy"), new { @class = "date", @style = "background-color: white;" })

非常に汚れていますが、動作します..

于 2012-05-30T13:18:52.117 に答える