2013-03-30 67 views
0

我試圖檢測用戶是否使用「選項卡」按鈕移出字段 - 如果是這樣,我想保存數據。當使用事件監聽器時,knockout沒有綁定?

在這種情況下,當通過標籤退出最後一個字段時,會保存兩個字段。如果我手動點擊「保存」,這兩個字段都會正確更新。如果我使用TAB,只保存第一個字段,而舊字段不保存新數據。這告訴我,不知何故「keydown」綁定沒有看到新的數據。

如果我在本地調試並將鼠標懸停在tabOut方法中的「數據」上,則會看到第一個字段有新數據,但第二個字段有舊數據。

小提琴:http://jsfiddle.net/PTSkR/18/

任何幫助,將不勝感激!

觀點:

 <div class="span5 side-study-box"> 
      <textarea data-bind="value: sides()[0].content"></textarea> 
     </div> 
     <div class="span5 side-study-box"> 
      <textarea data-bind="value: sides()[1].content, event: { keydown: tabOut }"></textarea> 
     </div> 

tabOut功能:

self.tabOut = function (data, event) { 

      if (event.keyCode == 9) { 
       debugger; 
       self.save(); 
      }; 
      return true; 
     }; 
+0

那麼你應該在演示中應用綁定,我想你在你的代碼? – ryudice

+0

是的,我在代碼:) – RobVious

+0

@ryudice - 剛更新了應用的綁定 – RobVious

回答

2

您是否嘗試過加入 「valueUpdate: 'afterkeydown'」 bingings你的文本框?

+0

這麼簡單!謝謝 :) – RobVious