2013-08-22 51 views
1

我是全新的JavaScript和淘汰賽。我正在使用knockout-validation進行客戶端驗證,並且遇到了一些麻煩。我想要一些需要用戶輸入的文本框在模糊時顯示錯誤消息(即使用戶沒有輸入任何內容)。我碰到的一個問題是,我不想馬上顯示錯誤消息。我能夠得到這個工作,但想知道是否有人有一個更優雅的方式來做到這一點。我所做的僞代碼是將文本框的值設置爲可觀察值,然後將其訂閱到文本框的焦點。下面是這個視圖模型和小提琴的示例代碼,用它去:顯示模糊文本框的錯誤消息

self.firstName = ko.observable().extend({ 
    required: true, 
    notify: 'always' 
}); 

self.firstName.focused = ko.observable(); 

self.firstName.focused.subscribe(function(newVal) { 
    if(not the first time in the function and the value hasn't changed) 
    { 
     update the value to itself; 
     //if this is empty then it will trigger the "required" error message 
    } 
}); 

http://jsfiddle.net/sderico/qAnxw/

我想知道是否有實現這個功能(或任何其他方式是不是活得一個更好的方式太複雜)。提前致謝!

回答

0

您只需在value綁定中指定valueUpdate option'blur'即可。隨後的淘汰賽也將更新的firstName上觸發驗證的模糊事件的價值:

<input type="text" runat="server" ID="FirstName" 
     data-bind="value: firstName, valueUpdate: 'blur'"/> 

演示JSFiddle

+0

這是好得多。謝謝! – Teeknow

+0

發現了一個小錯誤(當然這並不是真的,因爲這樣做是我所問的)如果輸入有效的文本並按回車以嘗試提交此文本框所在的窗體,那麼會彈出一條無效消息。我想我可以做一些類似bind valueUpdate的事情:{'blur','submit'}所以我會試試看。 – Teeknow