2012-10-12 77 views
0

如何在文本輸入值更改後立即更新視圖模型knockout.js?問題是僅當字段鬆散焦點時纔會觸發更新。在文本框值更改後立即更新knockout.js視圖模型

knockout.js documentation

「afterkeydown」是最好的選擇,如果你想 讓您的視圖模型實時更新。

我沒有覺得這有幫助。在我的系統中,我有稱爲用戶令牌的字段。因此用戶經常使用鼠標粘貼令牌。

那麼如何讓knockout.js立即爲文本字段中的每個文本更改更新模型。

+0

起碼,它必須得到關注,以便它們貼在右邊的令牌?所以也許有一個焦點事件處理程序作爲備份運行。或者總是隻有onchange – thescientist

+0

同意,一旦粘貼和標籤出/失去焦點onchange或使用jquerys change()函數將比檢查每個鍵入 – user1166905

+0

我會把它作爲一個答案。 – thescientist

回答

0

正如你在你的問題中提到的那樣,這是由valueUpdate binding控制的。如果您只需要支持「現代瀏覽器」,則推薦使用input。 「非現代瀏覽器」基本上意味着IE8及更早版本。從文檔:

[所有valueUpdate]選項中,input是,如果你想保持你的 視圖模型實時更新的最佳選擇,而你只需要支持 合理的現代瀏覽器如IE 9+(而「afterkeydown」是 適合舊版瀏覽器的不錯選擇)。例如:

<p>Your value: <input data-bind="value: someValue, valueUpdate: 'input'" /></p> 
<p>You have typed: <span data-bind="text: someValue"></span></p> <!-- updates in real-time --> 

<script type="text/javascript"> 
    var viewModel = { 
     someValue: ko.observable("edit me") 
    }; 
</script>