敲除文本框hasfocus需要在键入一些文本后单击两次才能离开焦点



我在一个文本框上有一个焦点数据绑定,在键入一些文本后,单击另一个文本盒,焦点不会改变,直到您再次单击。不管你在哪里点击,第一次点击似乎都不会改变焦点。

这里有一个jsfiddle演示http://jsfiddle.net/9LuJy/1/.

以下是导致此问题的视图模型。

var viewmodel = function() {
    var self = this;
    self.fields = ko.observableArray();
    self.fields.push(new Field());
}
var Field = function() {
    var self = this;
    self.isFocus = ko.observable(false);
    self.textValue = ko.observable();
}

这是html

<div data-bind="foreach: fields">
    <input type="text" data-bind="hasfocus: isFocus, value: textValue" />
</div>
<input type="text" />

我想这可能是在打字后更新可观察到的,所以可能需要一些延迟?

V2.3中修复的已知问题

在Firefox、Internet Explorer和Chrome之外,我只在Chrome中注意到了这个问题。考虑到小提琴中使用的Knockout版本(2.2.1),我发现这篇评论与所描述的行为有关。升级版本将解决此问题。

替代解决方案

如果升级版本不是一个可行的选项,则可以考虑添加valueUpdate: 'afterkeydown'

最新更新