【发布时间】:2012-11-02 02:53:47
【问题描述】:
我有一组项目需要作为一个整体进行验证。我在群里设置了validatedObservable,但是没有显示错误信息。
我在这里有一个简化的例子。我希望每个数字都在 0-100 之间,并且总和正好是 100。我该如何处理这种验证?
更新:我知道在这个例子中我可以创建一个ko.computed 并验证它,但这不是我需要的。
示例: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);
【问题讨论】:
-
在 Chrome 中我可以看到“请输入小于或等于 100 的值”。如果我输入大数字...
-
这些错误消息是针对每个号码的。我还需要验证组。每个数字必须在 0-100 之间,总和必须等于 100。我更新了示例,因为它有缺陷。
标签: knockout.js knockout-validation