【问题标题】:Knockout value binding to HTML5 date picker (Chrome)剔除值绑定到 HTML5 日期选择器 (Chrome)
【发布时间】: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


    【解决方案1】:

    目前还不清楚您要寻找什么样的答案。如果问题只是“它应该以这种方式表现吗?”那么答案是“是”。 “为什么?”的答案不太清楚。

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

    【讨论】:

    • 点了。我在关注这是否是控件应该表现的方式,如果不是,如何解决该错误。不幸的是,你的建议并没有给我我想要的日期控件的行为,这类似于 ,它只会在失去焦点或按 Enter 时触发更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 2013-08-03
    • 2019-01-01
    相关资源
    最近更新 更多