Validation 使用敲除验证重新评估依赖字段上的错误消息
所以我想用敲除验证来验证。我制作了这把小提琴来演示我的问题: 当我更改“数量”时,我已经收到“双倍数量”的错误消息,我希望它更新错误消息。当验证有效时,它似乎会消失,但如果仍然无效,它不会更新 是否可以通过敲除验证来重新评估文本?如果是,怎么做?它似乎要进行一些重新评估,因为当字段有效时,错误就会消失 例如:Validation 使用敲除验证重新评估依赖字段上的错误消息,validation,knockout.js,knockout-validation,Validation,Knockout.js,Knockout Validation,所以我想用敲除验证来验证。我制作了这把小提琴来演示我的问题: 当我更改“数量”时,我已经收到“双倍数量”的错误消息,我希望它更新错误消息。当验证有效时,它似乎会消失,但如果仍然无效,它不会更新 是否可以通过敲除验证来重新评估文本?如果是,怎么做?它似乎要进行一些重新评估,因为当字段有效时,错误就会消失 例如: 输入2的数量 在双倍数量中输入2,显示至少必须为4的错误 在数量中输入3,双倍数量的错误消息仍然是 同样的 在数量中输入1,双倍数量的错误消息消失 以下是JSFIDLE代码: <di
<div id="vm">
<span>Quantity</span>
<input type="number" data-bind="value: quantity"/><br/>
<span>Double quantity</span>
<input type="text" data-bind="value: doubleQuantity"/>
</div>
ko.validation.registerExtenders();
var Vm = function(){
var self = this;
self.quantity = ko.observable().extend({ max: 5 });
self.doubleQuantity = ko.observable().extend({validation: {
validator: function (val) {
this.message = 'must be at least ' + self.quantity() * 2
return val >= 2 * self.quantity();
},
message: ''
} });
};
ko.applyBindings(new Vm(), document.getElementById('vm'));
量
双倍数量
ko.validation.registerExtenders();
var Vm=函数(){
var self=这个;
self.quantity=ko.observable().extend({max:5});
self.doubleQuantity=ko.observable().extend({验证:{
验证器:函数(val){
this.message='必须至少为'+self.quantity()*2
返回值>=2*自身数量();
},
消息:“”
} });
};
applyBindings(newvm(),document.getElementById('Vm');
使用和如果相关字段被修改,则错误消息似乎不会得到更新(已尝试,但无法使其工作) 一种解决方法是触发对doubleQuantity的重新评估,每当依赖项发生变化时,通过调用可观察项上的
valueHasMutated
,模拟该值已发生变化。在VM内部和末尾添加以下内容:
self.quantity.subscribe(function(){
self.doubleQuantity.valueHasMutated();
});
工作如果相关字段被修改,则错误消息似乎不会得到更新(已尝试,但无法使其工作) 一种解决方法是触发对doubleQuantity的重新评估,每当依赖项发生变化时,通过调用可观察项上的
valueHasMutated
,模拟该值已发生变化。在VM内部和末尾添加以下内容:
self.quantity.subscribe(function(){
self.doubleQuantity.valueHasMutated();
});
工作您需要使用这些过时的库吗?我想这一个会有帮助:您需要使用这些过时的库吗?我想这一个会有帮助:我实际上试图像这样解决它,但我不知道valueHasMutated()函数。谢谢实际上,我试图像这样解决它,但我不知道valueHasMutated()函数。谢谢