2012-10-12 42 views
0

如何在文本输入值更改后立即更新视图模型knockout.js?问题是仅当字段松散焦点时才会触发更新。在文本框值更改后立即更新knockout.js视图模型

knockout.js documentation

“afterkeydown”是最好的选择,如果你想 让您的视图模型实时更新。

我没有觉得这有帮助。在我的系统中,我有称为用户令牌的字段。因此用户经常使用鼠标粘贴令牌。

那么如何让knockout.js立即为文本字段中的每个文本更改更新模型。

+0

起码,它必须得到关注,以便它们贴在右边的令牌?所以也许有一个焦点事件处理程序作为备份运行。或者总是只有onchange – thescientist

+0

同意,一旦粘贴和标签出/失去焦点onchange或使用jquerys change()函数将比检查每个键入 – user1166905

+0

我会把它作为一个答案。 – thescientist

回答

0

正如你在你的问题中提到的那样,这是由valueUpdate binding控制的。如果您只需要支持“现代浏览器”,则推荐使用input。 “非现代浏览器”基本上意味着IE8及更早版本。从文档:

[所有valueUpdate]选项中,input是,如果你想保持你的 视图模型实时更新的最佳选择,而你只需要支持 合理的现代浏览器如IE 9+(而“afterkeydown”是 适合旧版浏览器的不错选择)。例如:

<p>Your value: <input data-bind="value: someValue, valueUpdate: 'input'" /></p> 
<p>You have typed: <span data-bind="text: someValue"></span></p> <!-- updates in real-time --> 

<script type="text/javascript"> 
    var viewModel = { 
     someValue: ko.observable("edit me") 
    }; 
</script>