KnockoutJSの標準のイベントにEnterキー押下のものはありません(今もないはず)。
なので、独自に追加しないといけません。
といってもbindinghandlersから簡単に追加できます。
// knockout初期化前に記述すること
ko.bindingHandlers.executeOnEnter = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var allBindings = allBindingsAccessor();
// ここではjQueryを使ってますが、イベント拾えれば何でもいいです
$(element).keypress(function (event) {
var keyCode = event.which || event.keyCode;
if (keyCode === 13) { // Enterキーだった場合
allBindings.executeOnEnter.call(viewModel);
}
});
}
};
var viewModel = {
search: function () {
// ここで検索を実行するとする
alert("けんさく!けんさく!");
}
}
ko.applyBindings(viewModel);
イベントを追加したら、clickなどと同じ感覚でdata-bindに追加してください。
<input data-bind="value: query, valueUpdate: 'afterkeydown', executeOnEnter: search" />
これでフォーム入力中のEnterからviewModel.search()が実行されるようになりました。
bindingHandlersはKnockoutJSでゴニョゴニョやろうとすると必ずぶち当たります。
自分もまだよく理解出来ていないので、当面はTipsを載せるだけ・・・。