Knockout.js フォーム入力中に Enter キーでファンクション実行

検索ボックスなどで、入力中に Enter キーで検索を実行したいけど、submitではやりたくない場合などに。

<input type="text" placeholder="検索ワード" data-bind="textInput: query, event: {keypress: search}">

inputのdata-bindにtextInputを使うのがポイント。valueでのバインドだと一回目空で渡ってしまう。

function AppViewModel() {
    var self = this;
    self.search = function(d,e){
        // enterキーを拾う
        if (e.keyCode === 13) {
            // 何か処理
        }
        return true;
    };
}

ko.applyBindings(new AppViewModel());