2014-11-21 53 views
0

我有一個'保存'按鈕在我的窗體上有敲除啓用綁定。我添加了valueUpdate:'keypress'給我的knockout綁定表達式,希望保存按鈕在按鍵上啓用。我有一個簡單的輸入文本框與價值淘汰賽的約束力。相反,頁面仍然要求用戶點擊保存按鈕才能啓用。下面的HTML。當用戶鍵入輸入時,canSave將變爲true,以啓用保存按鈕。Knockout JS valueUpdate按鍵不能用於啓用綁定

<button data-bind="click: save, enable: canSave, valueUpdate: 'keypress'">Save</button> 

<h3><strong>First Name: <input data-bind="value: firstName"></strong></h3> 

回答

3

valueUpdate結合纔有意義加上value結合;它應該繼續您的輸入,而不是您的按鈕。

<button data-bind="click: save, enable: canSave">Save</button> 
<h3><strong>First Name: <input data-bind="value: firstName, valueUpdate: 'keypress'"></strong></h3> 

另外,還要考慮valueUpdate: 'input'如果你使用足夠新,以支持它的瀏覽器,甚至textInputbinding,如果你正在使用KO> 3.2

+0

這是有效的,除非保存按鈕似乎沒有被啓用,直到至少有兩次按鍵。例如,如果我點擊名字並按下1鍵,保存按鈕仍然被禁用。如果我按下第二個鍵,則保存按鈕變爲啓用狀態。 – 2014-11-24 15:19:21

+0

nvm,按鍵事件似乎需要兩個按鍵按鈕但值valueUpdate:'輸入'似乎只需一個按鍵=)後正常工作)謝謝! – 2014-11-24 15:23:28

+0

您看到該行爲的原因是,「按鍵」在按下按鍵時會用輸入內容更新可觀察項...其中不包括要輸入的按鍵。 – Retsam 2014-11-24 17:58:14

0

試試這個:

<button data-bind="click: save, enable: firstName().length > 0">Save</button> 

<h3><strong>First Name: <input data-bind="value: firstName, valueUpdate:'keypress'"></strong></h3> 

似乎是你的代碼,firstName是可觀察的,如果是這樣的話,那麼上面的代碼將會做你所需要的。如果沒有輸入,它將禁用按鈕,否則將其啓用。