我使用的是KnockoutJS和Knockout-Validation。我使用的是属性errorElementClass,但是,我希望在纠正验证错误时能够将另一个类分配给元素。只有在元素遇到错误并得到纠正后,才会将这个类分配给元素。
有没有人尝试过这种事情?
发布于 2012-12-07 21:58:58
您可以向可观察对象添加扩展程序,并订阅对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/
https://stackoverflow.com/questions/13763418
复制相似问题