2012-04-15 5 views
9

中=「数値」入力タイプは「afterkeydown」[イラスト用fiddleを見る]valueUpdate:Knockoutjs 2.0

私はタイプ番号のinputに値バインドを設定し、すぐに変更を反映するためにバインドされたobservableをしたいですフィールドの値に設定します。これを行うには、私はafterkeydown valueUpdateバインディングを設定しました。これは、上向き矢印キーと下向き矢印キーを使用して入力値を変更する場合に有効です。ただし、ブラウザで生成された(クロムでテストされた)インクリメント/デクリメントコントロールを使用して数値を変更すると、フォーカスが別の要素に変更された場合にのみ反映されます。私はこれが変更時のデフォルトの更新イベントを反映していると仮定します。

私の質問は、アップダウンキーボードエラーとブラウザで生成されたアップ/ダウンエラーコントロールを使用して両方の変更が発生するようにアップデートを設定する方法があるかどうかです。

答えて

18

valueUpdate追加のバインドはイベントの配列をとることができます。上向き/下向きの矢印をクリックすると、oninputイベントが発生するようです。

だから、あなたはそれが好きバインドすることができます。

<input type="number" data-bind="value: y, valueUpdate: ['afterkeydown', 'input']"/>

http://jsfiddle.net/rniemeyer/hY5T2/9/

+0

優秀な、それは魔法のように動作します。 ありがとう! – odedbd

+0

これをMVVM DotNetNukeモジュールで使用すると、小さな(!)スピナーアップとスピナーダウンのボタンが得られます。彼らはとても小さいので、それらを使用することはほとんど不可能です。私はそれがCSSのことを再確認しますが、それを理解することはできませんでした。私がと入力した場合、 valueUpdateは機能しません... あなたはうんざりしています... –

+0

Observableを更新しないSeleniumテストスクリプトの問題があり、これで解決しました。 – AaronLS