javascript - knockout 值绑定(bind)到 HTML5 日期选择器 (Chrome)

标签 javascript html google-chrome knockout.js

我注意到在与 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 ,使用 valuevalueUpdate: 'afterkeydown' 绑定(bind)。

关于javascript - knockout 值绑定(bind)到 HTML5 日期选择器 (Chrome),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26469550/

相关文章:

javascript - 如何在最新版本 BabelJS 中启用对类属性的支持?

javascript - 通过按索引将对象推送到数组来对数组进行排序

javascript - 将 Go 文件转换为 JS 失败

html - 谷歌地图 API 未以全尺寸显示

html - 在移动设备上将图像与边框 2 列对齐

jquery - jPlayer 在 chrome 上停止调用 jQuery.load() 方法刷新内容,但在 Firefox 上工作

javascript - 是否可以在没有外部输入的情况下使功能具有 self 意识

html - 如何在我的面板标题的左侧和右侧添加文本?

jquery - 停止 Chrome 扩展以覆盖原始页面的 css

android - 如何在 chrome 自定义选项卡 android 中共享 cookie 数据