在文本框值更改后立即更新knockout.js视图模型

时间:2012-10-12 23:07:44

标签: javascript html data-binding mvvm knockout.js

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

来自knockout.js documentation

  

“afterkeydown”是你想要的最佳选择   保持您的视图模型实时更新。

我觉得这没有用。在我的系统中,我有一个名为user token的字段。因此用户经常使用鼠标粘贴令牌。

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

2 个答案:

答案 0 :(得分:1)

正如您在问题中所提到的,这是由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>

答案 1 :(得分:0)

至少,它必须集中精力才能让它们正确粘贴令牌?因此,可能将焦点事件处理程序作为备份运行。

否则总会有变化。

这是关于在knockout.js中使用onchange的SO帖子,因为我个人从未使用过它。 KnockoutJS - Updating ViewModel OnChange of textbox value instead of OnBlur Options