2012-05-08 6 views
6

Knockout.jsとASP.NETを使用しています。私のHTMLは以下の通りです:Knockout.js valueキーボードが使用されているときにアップデートが行われない

ユーザがマウスを使って項目を選択すると、JSONは更新された情報でサーバに戻ります。しかし、ユーザーが「タブ」を使用して選択コントロールにタブを移動し、項目を選択してタブオフすると、選択した項目がUIに表示されてもJSONには空白の値が返されます。

ユーザーがキーボードのみを使用するとノックアウトビューモデルが更新されないようですが、ユーザーがマウスを使用したときにブラウザで特に発生する変更イベントがあるようです。

どうすればこの問題を解決できますか?ノックアウトモデルを手動で更新する機能を使用するために、選択ボックスonchangeイベントを登録する方法はありますか?

IE9とFirefoxの両方で試してみましたが、私は両方で同じ問題があります。

答えて

2

残りのコードはどのように見えますか? AJAXの呼び出しはどのように行われますか?

キーボードで選択を変更するこの例では、IEとFirefoxで私のために[OK]を動作します:

http://jsfiddle.net/mikebridge/yYS7c/2/

0

nockoutjsがモデルを更新してより多くトリガされるようにすると、イベントを変更できます。

<div class="InputField"> 
    Fixed/Floating 
    <div class="FieldContainer"> 
     <select data-bind="valueUpdate: 'blur', options: $root.FixedLoanOptions, selectedOptions: IsFixed" ></select> 
    </div> 
</div> 
+0

申し訳ありませんが、それは問題を解決していません。モデルデータは、キーボードを使用したときではなく、コントロールをクリックしたときだけ変わります。 – 333Mhz

0

あなたが選択オプションが選択されているだけLive exampleノックアウト更新モデルに見ることができるように:

  • マウスクリック
  • 押された入力ボタンキーボードの矢印ボタンで選択します。
0

valueUpdateを 'keyup'にバインドすると、私のトリックになりました。マウスで行われた変更には影響しません。

だから、このようなものは動作するはずです:

<div class="InputField"> 
    Fixed/Floating 
    <div class="FieldContainer"> 
     <select data-bind="valueUpdate: 'keyup', options: $root.FixedLoanOptions, selectedOptions: IsFixed" ></select> 
    </div> 
</div>