2012-12-07 64 views
3

我正在使用KnockoutJS和敲除驗證。我正在使用屬性errorElementClass,但是,我希望能夠在驗證錯誤得到糾正時爲其分配另一個類。這個類只在元素遇到錯誤並且已被糾正後才被分配給元素。敲除驗證糾正錯誤

有沒有人嘗試過這種事情?

回答

4

你可以體質的變化增加了觀測和可訂閱IsValid屬性

喜歡這個

ko.extenders.corrected = function(observable) { 
    observable.isCorrected = ko.observable(); 
    observable.isValid.subscribe(function(value) { 
     observable.isCorrected(value == true); 
    }); 

    return observable; 
}; 

http://jsfiddle.net/fkkJz/

您需要手動綁定的CSS

<input data-bind="value: field, css: { corrected: field.isCorrected }" /> 

你也可以做一點小事o你不需要手動綁定css。這將覆蓋值綁定,並檢查它是否應該注入一個CSS結合 http://jsfiddle.net/HuLWD/

更新:我需要這個功能我自己由於需求和記住這個答案,但我也需要它來清除修正狀態如果第二個正確的值已提交,也可以像achived

ko.extenders.corrected = function(observable) { 
    var state = observable(); 
    observable.isCorrected = ko.observable(); 
    observable.isValid.subscribe(function(value) { 
     observable.isCorrected(value == true); 
     state = observable(); 
    }); 

    observable.subscribe(function(value) { 
     if(state !== value) { 
      observable.isCorrected(false); 
     } 
    }); 

    return observable; 
}; 

http://jsfiddle.net/HuLWD/1/

+1

謝謝,安德斯.....正是我一直在尋找。 – Tom

+0

如果您希望在提交第二個正確的值時清除更正的標誌,則需要獲得更多的創意 – Anders