淘汰验证纠正错误

时间:2012-12-07 12:48:11

标签: knockout.js knockout-validation

我正在使用KnockoutJS和Knockout-Validation。我正在使用属性errorElementClass,但是,我希望能够在更正验证错误时为元素分配另一个类。只有在元素遇到错误并且已经更正后才会将该类分配给元素。

有没有人尝试过这种事情?

1 个答案:

答案 0 :(得分:4)

您可以向observable添加扩展器并订阅对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 }"  />

你也可以做一点黑客,这样你就不需要手动绑定css了。这将覆盖值绑定并检查它是否应该注入css绑定 http://jsfiddle.net/HuLWD/

更新:我需要这个功能,因为有一个要求并记住了这个答案,但如果提交了第二个正确的值,我还需要它来清除纠正的状态,它可以像

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/