使用knockout.js(valueUpdate)在输入更改时调用函数

使用knockout.js(valueUpdate)在输入更改时调用函数,knockout.js,knockout-3.0,knockout-3.2,Knockout.js,Knockout 3.0,Knockout 3.2,当我的输入值被更新时,我试图调用一个函数。 该函数将验证输入值并将标志设置为true或false,这将在DOM中的多个元素中使用 我一直在尝试建议的解决方案: 但在afterKeyDown上似乎不起作用。它只调用unfocus上的函数,如您在此处所见: 我做错了什么?这是您的最新信息 试试这个。cheersvalueUpdate只在按下键时更新可观察值(如代码中指定的)。您可以尝试订阅observable并检查其中的必要逻辑。大多数imp功能虽然您的observable在按下键后得到更新,

当我的输入值被更新时,我试图调用一个函数。 该函数将验证输入值并将标志设置为true或false,这将在DOM中的多个元素中使用

我一直在尝试建议的解决方案:


但在afterKeyDown上似乎不起作用。它只调用unfocus上的函数,如您在此处所见:


我做错了什么?

这是您的最新信息


试试这个。cheersvalueUpdate只在按下键时更新可观察值(如代码中指定的)。您可以尝试订阅observable并检查其中的必要逻辑。大多数imp功能虽然您的observable在按下
键后得到更新,但
更改
的工作方式不同,只有在焦点丢失时才会触发。没有订阅功能,没有其他方法吗?@alvaro您也可以使用
customBindingHandlers
但那是以后的事了,不必把事情搞得太复杂了
subscribe
是最好的方式。谢谢。我将订阅服务器放在模型中,使其更简单。
<input data-bind="event: { change: value_changed }, value: saved_value, valueUpdate: 'afterkeydown'" />
<input data-bind="value: demo, valueUpdate: 'afterkeydown'" />


var viewModel = function () {
    var self = this;

    self.demo = ko.observable('');
    self.myFunction = function(){
        alert("fired");
    }
}

var VM = new viewModel();
ko.applyBindings(VM);

VM.demo.subscribe(function(){
    VM.myFunction();
});
var viewModel = function () {

    var self = this;

    self.demo = ko.observable('');

    self.myFunction = function () {
        alert("fired");
    }

    self.worker = ko.computed(function () {
        if (self.demo()) self.myFunction();
    }, this);
}

var VM = new viewModel();
ko.applyBindings(VM);