6

ドキュメント(knockoutjs.com/documentation/submit-binding.html)によると、knockoutjsの送信バインディングには、テキストボックスに入力しているときにEnterキーを押すなど、フォームを送信する別の方法をキャプチャできるという利点があります。フォームにグリッドがあり、一部のユーザーはEnterキーを使用して1つのフィールドから次のフィールドに移動しようとしています。これが発生したときにフォームを送信しないようにする方法はありますか?

4

1 に答える 1

9

1つの選択肢はkeypress、Enterキーを吸収するハンドラーもフォームに追加することです。次のようになります。

<form data-bind="event: { keypress: absorbEnter }, submit: test">
    <div data-bind="absorbEnter: true">
    <input data-bind="value: name">
    <input type="submit" value="Go" />
    </div>
</form>

js:

var viewModel = {
    name: ko.observable("test"),
    absorbEnter: function(data, event) {
       return event.keyCode !== 13;  
    },
    test: function() {
        console.log("submitting", arguments);        
    }
};
ko.applyBindings(viewModel);

こちらのサンプル:http://jsfiddle.net/rniemeyer/FvZXj/2/

于 2012-04-23T18:34:52.777 に答える