【发布时间】:2014-10-20 15:38:00
【问题描述】:
我注意到在与 HTML5 日期输入的 Knockout 绑定中,每当在控件中键入时按下某个键,就会触发该绑定。这与常规的 <input type="text"/> 框形成对比,后者的值仅在焦点丢失或按下 Enter 时导致可观察对象更新。
我相信默认情况下 Knockout 使用更改事件,因此,作为一个简单示例,说明在没有 Knockout 的情况下它的行为方式,我在这里制作了一个小小提琴 (http://jsfiddle.net/qm282xdm/)。
您可以看到输入文本框不会触发更改事件,直到您失去焦点或在框上按 Enter 键,但如果您在 <input type="date"/> 中键入新日期,则每次击键都会触发更改事件.
这应该是这种行为吗?文本与日期输入的不同行为有点违反直觉。我正在运行 Chrome 版本 34.0.1847.116,我感觉旧版本的行为更像我的预期,但我不能确定。
编辑:我想知道这是 Chrome 的问题还是“设计使然”。更改事件的触发在文本类型输入上是直观的,我希望它与日期类型输入相同。在没有关于如何解决这个问题的任何想法的情况下,我将编写一个自定义绑定,在我期望的情况下触发。
【问题讨论】:
标签: javascript html google-chrome knockout.js