新しい方法
それ以外の:
data-bind="value: myValue, valueUpdate: ['input', 'textchange']"
textInput バインディングを使用できるようになりました。
data-bind="textInput: myValue"
ドキュメントから:
textInput
バインディングは、テキスト ボックス ( ) またはテキスト エリア ( ) をビューモデル プロパティにリンクし<input>
、<textarea>
ビューモデル プロパティと要素の値の間で双方向の更新を提供します。value
バインディングとは異なり、textInput
オートコンプリート、ドラッグ アンド ドロップ、クリップボード イベントなど、すべての種類のユーザー入力に対して DOM からの即時更新を提供します。
オールドウェイ
valueUpdate: ['afterkeydown','propertychange','input']
RightMouseClick→DeleteまたはRightMouseClick→をサポートしたい場合、IE9 では動作しませんCut。
私が思いついた解決策は、jQuery とjQuery Splendid Textchangeという jQuery プラグインを使用することです。jQuery とプラグイン スクリプトの両方をロードしたら、'textchange' イベントを問題なく使用できます。
valueUpdate: 'textchange'
しかし、いつの日か悪いブラウザーのサポートをやめるかもしれないので、私はこれを持っています:
valueUpdate: ['input', 'textchange']
これは、これと他のイベントをテストするために作成したフィドルです: http://jsfiddle.net/kaleb/w3ErR/
注:requirejs を使用している場合、jquery が常に適切に機能するためには、ノックアウトに強く依存している必要がある場合があります。