2

MVC3 アプリケーションでは、Firefox と Chrome でまったく異なる表示の jQuery datepicker プラグインを使用しています。アプリケーションと 2 つのスクリーンショットに関連するコードがあります。

<head>
    <link href="@Url.Content("~/Content/themes/redmond/jquery-ui-1.8.18.custom.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-ui-1.8.18.custom.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.ui.datepicker.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.ui.datepicker-fr.js")" type="text/javascript"></script>
    <script>
        $(document).ready(function () {
            $('.datefield').datepicker({
                showOn: 'both',
                buttonImage: "/content/images/calendar.gif",
                showAnim: "clip",
                regional: "fr",
                defaultDate: null,
                changeMonth: true,
                changeYear: true
            });
        });
    </script>
</head>

@using(...)
{
    ...
    @Html.LabelFor(model => model.candidat.date_naissance)
    @Html.EditorFor(model => model.candidat.date_naissance, new { @class = "date" })
    ...
}

私は EditorTemplate を使用します:

@model DateTime
@Html.TextBox("", String.Format("{0:d}", Model.ToShortDateString()),
  new { @class = "datefield", type = "date" })

モデルでは、フィールド candidat.date_naissance は次のとおりです。

[Required(ErrorMessageResourceType = typeof(CandidatResources), ErrorMessageResourceName = "RequiredDateNaissanceMessage")]
[Display(ResourceType = typeof(CandidatResources), Name = "DateNaissanceDisplay")]
[DataType(DataType.Date, ErrorMessageResourceType = typeof(CandidatResources), ErrorMessageResourceName = "InvalidDateNaissanceMessage")]
public System.DateTime date_naissance { get; set; }

生成される HTML は次のとおりです。

  • Firefox の場合:

    input type="date" value="12/19/1974" name="candidat.date_naissance" id="candidat_date_naissance" data-val-required="La date de naissance est obligatoire" data-val="true" class= 「datefield hasDatepicker」
    
  • クロムで:
    input class="datefield hasDatepicker" data-val="true" data-val-required="La date de naissance est obligatoire" id="candidat_date_naissance" name="candidat.date_naissance" type="date" value="12/ 1974年19月号
    

最後に、同じデータのスクリーンショットを次に示します。

ファイアフォックス:

ファイアフォックス

クロム:

クロム

Chrome では、文字列 "mm/dd/yyyy" が常に表示されます。日付が既に存在する場合でも (たとえば、日付が入力されて Firefox に保存された後、更新時に Chrome でも表示されると思いますが、表示されません)。起こる)。

そのような動作の説明とそれを修正する方法は何ですか?

私はすでにこの解決策を試しましたが、役に立ちませんでした。

注: これは、Cassini サーバーと IIS (ローカルと仮想ボックスの両方) の両方で発生します。

4

1 に答える 1

4

以下の記事を参照してください。value 属性またはフォーム送信で mm/dd/yyyy 形式を適用する場合は、type=date を使用しないでください。

于 2013-02-05T00:58:43.177 に答える