【问题标题】:Knockout-validation corrected errors淘汰赛验证纠正错误
【发布时间】:2013-05-03 16:46:11
【问题描述】:

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

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

【问题讨论】:

    标签: knockout.js knockout-validation


    【解决方案1】:

    您可以向 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/

    【讨论】:

    • 如果您希望它在提交第二个正确值时清除更正标志,则需要更多创意
    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 2013-10-24
    • 2012-11-02
    • 2011-08-09
    • 2014-05-28
    • 2017-04-30
    • 2013-08-29
    • 2012-11-04
    相关资源
    最近更新 更多