淘汰赛验证已验证可观察的组错误 [英] Knockout Validation validatedObservable group error
问题描述
我有一组需要整体验证的项目.我在网上论坛上设置了validatedObservable
,但是错误消息没有显示.
I have a group of items that I need to validate as a whole. I setup a validatedObservable
on the group, but the error message doesn't display.
我这里有一个简化的例子.我希望每个数字都介于0到100之间,且总和恰好是100.如何处理这种验证?
I have a simplified example here. I want each number to be between 0-100 and the sum to be exactly 100. How do I handle this kind of validation?
更新:我知道在此示例中,我可以制作一个ko.computed
并进行验证,但这不是我所需要的.
Update: I know in this example I could just make a ko.computed
and validate that, but that's not what I need.
示例: http://jsfiddle.net/CGuW2/5/
0-100:<input data-bind="value: num1, valueUpdate: 'afterkeydown'"/><br>
0-100:<input data-bind="value: num2, valueUpdate: 'afterkeydown'"/><br>
<span class="validationMessage" data-bind='text: isValidSum.errors()'></span>
ko.validation.rules['mustEqual'] = {
validator: function (val, otherVal) {
return (parseInt(val.num1()) + parseInt(val.num2())) == otherVal;
},
message: 'total must equal {0}'
};
ko.validation.registerExtenders();
var viewModel = {
num1: ko.observable("50").extend({ number: true, min: 0, max: 100 }),
num2: ko.observable("50").extend({ number: true, min: 0, max: 100 })
};
viewModel.isValidSum = ko.validatedObservable({
num1: viewModel.num1,
num2: viewModel.num2
}).extend({ mustEqual: 100 });
ko.applyBindings(viewModel);
推荐答案
我需要绑定到text: isValidSum.error
而不是text: isValidSum.errors()
.另外,执行此操作时似乎必须绑定visible: !isValidSum.isValid()
.
I needed to bind on text: isValidSum.error
instead of text: isValidSum.errors()
. Also, it looks like you have to bind visible: !isValidSum.isValid()
when you do this.
所以我的解决方案如下:
So my solution looks like this:
示例: http://jsfiddle.net/CGuW2/6/
0-100:<input data-bind="value: num1, valueUpdate: 'afterkeydown'"/><br>
0-100:<input data-bind="value: num2, valueUpdate: 'afterkeydown'"/><br>
<span class="validationMessage" data-bind='visible: !isValidSum.isValid(), text: isValidSum.error'></span>
这篇关于淘汰赛验证已验证可观察的组错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!