使用敲除验证重新评估依赖字段上的错误消息
Re-evaluate error message on dependant field with knockout validation
所以我正在尝试进行一些验证以使用敲除验证。我创建这个 fiddle 来演示我的问题:https://jsfiddle.net/utjmLhxa/7/
当我更改 "quantity" 并且我已经收到 "double quantity" 的错误消息时,我希望它能更新错误消息。验证有效时好像消失了,但如果仍然无效则不会更新。
是否可以通过敲除验证来重新评估文本?如果是这样,怎么办?它似乎做了一些重新评估,因为当字段有效时错误消失。
示例:
- 在数量中输入 2
- 在 Double 数量中输入 2,显示错误,它必须至少为 4
- Quantity输入3,Double数量报错还是
一样
- 在数量中输入 1,Double 数量的错误消息消失
这是 jsfiddle 代码:
<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'));
使用https://knockoutjs.com/downloads/knockout-2.2.1.js and https://cdnjs.cloudflare.com/ajax/libs/knockout-validation/1.0.2/knockout.validation.min.js
如果相关字段修改(已尝试但未能成功),错误消息似乎不会更新。
解决方法是在 doubleQuantity 上触发 re-evaluation,每当 dependent
发生变化时,通过在可观察对象上调用 valueHasMutated
来模拟值已发生变化。在 VM 内部和末尾添加以下内容:
self.quantity.subscribe(function(){
self.doubleQuantity.valueHasMutated();
});
工作fiddle
所以我正在尝试进行一些验证以使用敲除验证。我创建这个 fiddle 来演示我的问题:https://jsfiddle.net/utjmLhxa/7/
当我更改 "quantity" 并且我已经收到 "double quantity" 的错误消息时,我希望它能更新错误消息。验证有效时好像消失了,但如果仍然无效则不会更新。
是否可以通过敲除验证来重新评估文本?如果是这样,怎么办?它似乎做了一些重新评估,因为当字段有效时错误消失。
示例:
- 在数量中输入 2
- 在 Double 数量中输入 2,显示错误,它必须至少为 4
- Quantity输入3,Double数量报错还是 一样
- 在数量中输入 1,Double 数量的错误消息消失
这是 jsfiddle 代码:
<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'));
使用https://knockoutjs.com/downloads/knockout-2.2.1.js and https://cdnjs.cloudflare.com/ajax/libs/knockout-validation/1.0.2/knockout.validation.min.js
如果相关字段修改(已尝试但未能成功),错误消息似乎不会更新。
解决方法是在 doubleQuantity 上触发 re-evaluation,每当 dependent
发生变化时,通过在可观察对象上调用 valueHasMutated
来模拟值已发生变化。在 VM 内部和末尾添加以下内容:
self.quantity.subscribe(function(){
self.doubleQuantity.valueHasMutated();
});
工作fiddle