web-dev-qa-db-ja.com

Chrome 56と互換性のない剣道UI日付ピッカー

Chromeを最後のバージョン56.0.2924.76(64ビット)に更新した後、剣道の日付ピッカーが正しく機能しなくなりました。

すべての日付ピッカーはViewModelsを使用してバインドされていたため、値が表示されなくなりました。それらを調べると、値が設定されていることがわかりますが、表示されていません。

例えば:

@(Html.Kendo().DatePicker()
                    .Name("DateFrom")
                    .Start(CalendarView.Month)
                    .Depth(CalendarView.Month)
                    .Format("MM/dd/yyyy")
                    .HtmlAttributes(new { @id = "ClosingStartDate", @placeholder = "enter date from", @class = "masked-date" }))

Chromeの開発者ツールでこの要素を調べると、次の結果が得られます。

<input class="k-input masked-date" id="ClosingStartDate" name="DateFrom" placeholder="enter date from" type="text" value="12/21/2016" data-role="datepicker" readonly="" disabled="disabled" maxlength="20" style="width: 100%;">

しかし、このように表示されます

プロパティ値をKnockOutにバインドすると、すべての日付ピッカーが正常に機能します。

剣道のバージョンは次のとおりです。剣道UIコンプリートv2012.2.913

それをバインドする別の方法はありますか? Chrome v.56を使用して何を変更する必要がありますか?

16
Ivan Franco

現在、DatePickerラッパーはINPUT要素タイプ「date」をレンダリングします。 Kendo DatePickerがクライアントで初期化されると、入力のタイプが「テキスト」に変更されます。したがって、「日付」入力のネイティブレンダリングは避けます。 JavaScriptが無効になっている場合、Kendo DatePickerは初期化されず、入力をネイティブ入力として使用できます。

残念ながら、「日付」タイプをネイティブでサポートしている一部のブラウザ(特にChrome)は設定値を検証し、正しい形式([RFC 3339]で定義されている有効な完全な日付)でない場合は無視されます。今のところ、入力のタイプを永続的に「テキスト」に変更して、ネイティブ入力に関連する問題を回避できます。

@(Html.Kendo().DatePicker()
.Name("datepicker")
.Value("10/10/2011")
.HtmlAttributes(new { type = "text" }))

属性を追加するだけですtype="text"剣道UIフォーラムの提案に基づいており、私にとってはうまくいきます。

リンクは次のとおりです。 http://www.telerik.com/forums/date-field-not-rendering-correct-in-browsers-that-support-html-5

26

DatePicker()にフォーマットを追加することでこれを修正できます、これを試してください

@(Html.Kendo().DatePicker()
 .Name("dateReturn")
 .Format("yyyy-MM-dd")
 .Value(DateTime.Today)
 .Min(DateTime.Today)
 ...............
)