Knockout.js 淘汰验证更正了错误

Knockout.js 淘汰验证更正了错误,knockout.js,knockout-validation,Knockout.js,Knockout Validation,我正在使用KnockoutJS和knockoutvalidation。我正在使用属性errorElementClass,但是,我希望能够在更正验证错误时为元素分配另一个类。只有在元素遇到错误并已更正后,才会将此类分配给元素 有人尝试过这种事情吗?您可以向observable添加一个扩展程序,并订阅对isValid属性的更改 像这样 ko.extenders.corrected = function(observable) { observable.isCorrected = ko.obs

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


有人尝试过这种事情吗?

您可以向observable添加一个扩展程序,并订阅对isValid属性的更改

像这样

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

    return observable;
};

您需要手动绑定css

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

如果要在提交第二个正确值时清除“已更正”标志,则需要更具创造性
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;
};