Kendo UI 日期选择器与 Chrome 56 不兼容
Posted
技术标签:
【中文标题】Kendo UI 日期选择器与 Chrome 56 不兼容【英文标题】:Kendo UI datepicker incompatible with Chrome 56 【发布时间】:2017-06-16 04:07:15 【问题描述】:将 Chrome 更新到最新版本 56.0.2924.76(64 位)后,我们的 Kendo 日期选择器开始无法正常工作。
所有日期选择器都使用 ViewModel 绑定,现在它们不显示它们的值。如果我们检查它们,我们会看到该值已设置,但尚未显示。
例如:
@(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%;">
But it's show like this
当我们将属性值与 KnockOut 绑定时,所有日期选择器都可以正常工作。
我们的剑道版本是:Kendo UI Complete v2012.2.913
还有其他方法可以绑定吗?使用 Chrome v.56 我们应该改变什么?
【问题讨论】:
【参考方案1】:目前,DatePicker 包装器呈现 INPUT 元素类型“日期”。当 Kendo DatePicker 在客户端初始化时,它会将输入的类型更改为“文本”。因此,我们避免了“日期”输入的本地呈现。如果禁用 javascript,则不会初始化 Kendo DatePicker,输入可以作为原生输入。
不幸的是,一些原生支持“日期”类型的浏览器(尤其是 Chrome)会验证设置值,如果它的格式不正确([RFC 3339] 中定义的有效完整日期),那么它是忽略。现在,您可以将输入的类型永久更改为“文本”,并避免与本机输入相关的任何问题:
@(Html.Kendo().DatePicker()
.Name("datepicker")
.Value("10/10/2011")
.HtmlAttributes(new type = "text" ))
我只是根据剑道用户界面论坛中的建议添加属性type="text"
,它对我有用。
这是一个链接: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)
...............
)
【讨论】:
@IvanFranco,它已经有一个不正确的格式。最简洁的解决方案是确保 HTML 中的日期符合 HTML 日期标准。我知道更改日期格式会很麻烦,但有更快的解决方案。 @TimGrant 你是正确的标准格式。但是在我们的系统中,所有日期都是这种格式,我们无法更改它。这就是为什么添加属性 type="text" 对我有用。 @IvanFranco,我们还使用 type="text" 进行快速修复。这并不意味着这个答案不正确。 @TimGrant 我从来没有说过这个答案不太正确。对于我的具体问题和情况,另一个对我有用。以上是关于Kendo UI 日期选择器与 Chrome 56 不兼容的主要内容,如果未能解决你的问题,请参考以下文章
Angular 7从Kendo UI日期选择器获取选定日期的值
Kendo UI 日期时间选择器 - 选择上/下个月时调用 onclick 函数
[技术分享]20171127_Kendo UI _ datePicker日期控件只能选择,不能手动输入如何实现?