1 つのオプションは、valueUpdate
追加のバインドを使用して、キーを押すたびに強制的に更新することです。たとえば、次のようにします。
<input type="text" data-bind="value: InputValue, valueUpdate: 'afterkeydown', event: { keypress: RunSomethingKey }" />
それが目的でない場合は、実際にはハンドラーで要素の変更イベントを発生させたいと思うでしょう。たとえば、jQuery では、次のようにします$(event.target).change();
。
ただし、これをカスタム バインディングに移動した方がよいでしょう。おそらく次のようなものです(おそらく valueAccessor() の結果が関数かどうかを確認する必要があります):
ko.bindingHandlers.enterKey = {
init: function(element, valueAccessor, allBindings, vm) {
ko.utils.registerEventHandler(element, "keyup", function(event) {
if (event.keyCode === 13) {
ko.utils.triggerEvent(element, "change");
valueAccessor().call(vm, vm); //set "this" to the data and also pass it as first arg, in case function has "this" bound
}
return true;
});
}
};
更新されたサンプルは次のとおりです: http://jsfiddle.net/rniemeyer/nbnML/9/