我注意到在与 HTML5 日期输入的 Knockout 绑定(bind)中,只要在控件中键入内容时按下某个键,就会触发该绑定(bind)。这与常规的 <input type="text"/>
形成鲜明对比。框,其中值仅在焦点丢失或按下 Enter 时导致可观察值更新。
我相信默认情况下 Knockout 使用的是更改事件,因此为了一个简单的示例来说明在没有 Knockout 的情况下它的行为方式,我在这里制作了一个小 fiddle ( http://jsfiddle.net/qm282xdm/ )。
您可以看到,输入文本框不会触发更改事件,直到您失去焦点或在框中按 Enter 键,但如果您在 <input type="date"/>
中键入新日期,则输入文本框不会触发更改事件。那么每次击键都会引发更改事件。
这应该是这样的吗?文本与日期输入的不同行为有点违反直觉。我运行的是 Chrome 版本 34.0.1847.116,我感觉旧版本的表现更像我的预期,但我不能确定。
编辑:我想知道这是 Chrome 的问题还是“设计使然”。更改事件的触发在文本类型输入上是直观的,我希望它与日期类型输入相同。在没有任何关于如何解决此问题的想法的情况下,我将编写一个在我期望的情况下触发的自定义绑定(bind)。
最佳答案
目前还不清楚您正在寻找什么样的答案。如果问题只是“它应该这样做吗?”那么答案是"is"。 “为什么?”的答案有点不太清楚。
如果您想让它们更加一致,您可以使用 textInput
绑定(bind)而不是 value
绑定(bind),这可确保您从文本框绑定(bind)中立即获得更新。或者,对于旧版本的 knockout ,使用 value
与 valueUpdate: 'afterkeydown'
绑定(bind)。
关于javascript - knockout 值绑定(bind)到 HTML5 日期选择器 (Chrome),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26469550/