Knockout值绑定到HTML5日期选择器(Chrome)

时间:2014-10-20 15:38:00

标签: javascript html5 google-chrome knockout.js

我注意到在敲除HTML5日期输入的Knockout中,只要在键入控件时按下某个键就会触发绑定。这与常规<input type="text"/>框形成对比,其中值仅在焦点丢失或按下输入时导致observable更新。

我相信默认情况下Knockout正在使用更改事件,所以对于一个没有Knockout的行为方式的简单示例,我在这里制作了一个小小提琴(http://jsfiddle.net/qm282xdm/)。

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

这应该是这样的吗?文本与日期输入的不同行为有点违反直觉。我正在运行Chrome版本34.0.1847.116,我觉得旧版本的行为更像我期待的,但我无法确定。

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

1 个答案:

答案 0 :(得分:0)

不清楚你正在寻找什么样的答案。如果问题只是&#34;它是否应该以这种方式表现?&#34;然后答案是&#34;是&#34;。答案为&#34;为什么?&#34;有点不太清楚。

如果你想让它们更加一致,你可以使用textInput绑定而不是value绑定,这可以确保你从文本框绑定中立即获得更新。或者,对于较早版本的淘汰赛,请使用value绑定valueUpdate: 'afterkeydown'