0

subscribe 関数を使用して入力が変更されたときに実行するコードをバインドできること、および valueUpdate データ バインディングを使用して変更イベントをトリガーするものを定義できることを知っています。ただし、1 つのコードをバインドして valueUpdate の「変更」タイプを実行し、別のコードを「afterkeydown」、「input」、または「paste」タイプのいずれかで実行する方法はありますか?

4

1 に答える 1

0

絶対。ノックアウトの「イベント」バインディングを使用すると、次のようにハンドラーを複数のイベントにバインドできます。

<input type="text" data-bind="event: {keypress: onKeyPress, change: onChange}" />

ただし、Knockout はデフォルトでイベントのバブリングを自動的に停止することに注意してください。上記の例では、onKeyPress ハンドラーは keypress イベントがブラウザーによって処理されるのを停止します。これにより、change イベントが発生しなくなります。複数のイベントをバインドしていて、イベント ハンドラーがブラウザーによるデフォルトのイベント処理を停止しないようにする必要がある場合は、イベント ハンドラーから "true" を返すだけです。

このコードの動作はこちらで確認できます: http://jsfiddle.net/rrahlf/QEuQR/

于 2013-06-19T15:43:13.140 に答える