Kendo UI datepicker несовместим с Chrome 56

После обновления Chrome до последней версии 56.0.2924.76 (64-разрядная версия) наши датпикеры Kendo начали работать некорректно.

Все финалисты были привязаны с помощью 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, все финалисты работают нормально.

Наша версия Kendo: Kendo UI Complete v2012.2.913

Есть ли другой способ связать его? Что мы должны изменить с помощью Chrome v.56?

Ответ 1

В настоящее время оболочка DatePicker отображает элемент INPUT типа "дата". Когда Kendo DatePicker инициализируется на клиенте, он изменяет тип ввода на "текст". Таким образом, мы избегаем встроенного рендеринга ввода "date". Если 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

Ответ 2

Я могу исправить это, добавив формат DatePicker(), попробуйте это

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