将挖空值绑定到 HTML5 日期选取器 (Chrome)

Knockout value binding to HTML5 date picker (Chrome)

本文关键字:选取 Chrome 日期 HTML5 空值 绑定      更新时间:2023-09-26

我注意到在与HTML5日期输入的Knockout绑定中,每当在控件中键入时按下键时,绑定就会触发。这与常规<input type="text"/>框相反,在常规框中,该值仅在焦点丢失或按 Enter 时导致可观察量更新。

我相信默认情况下 Knockout 使用的是 change 事件,因此对于一个简单的例子来说明在没有 Knockout 的情况下它是如何表现的,我在这里制作了一个小提琴 (http://jsfiddle.net/qm282xdm/(。

您可以看到,在您失去焦点或按 Enter 之前,输入文本框不会触发更改事件,但是如果您在<input type="date"/>中键入新日期,则每次击键都会导致触发更改事件。

这是应该这样表现的吗?文本与日期输入的不同行为有点违反直觉。我运行的是 Chrome 版本 34.0.1847.116,我感觉旧版本的行为更像我预期的,但我不能确定。

编辑:我想知道这是Chrome的问题还是"设计使然"。更改事件的触发在文本类型输入上很直观,我希望它与日期类型输入相同。在没有任何关于如何解决此问题的想法的情况下,我将编写一个在我预期的情况下触发的自定义绑定。

目前还不清楚你在寻找什么样的答案。如果问题只是"它应该以这种方式行事吗?"那么答案是"是的"。"为什么?"的答案不太清楚。

如果要使它们更加一致,可以使用 textInput 绑定而不是 value 绑定,这可确保从文本框绑定获取即时更新。或者,对于旧版本的挖空,请使用value绑定valueUpdate: 'afterkeydown'