使用knockout-validation我试图将一些简单的验证应用于一个可观察的数组,该数组检查它至少有n个项目。
我创建了一个简单的测试验证规则
ko.validation.rules['minSelected'] = {
validator: function (val, minimum) {
var result = (val.length >= minimum);
console.dir(result);
return result;
},
message: 'This field requires at least {0} selected items.'
};
我在我的模特身上申请
self.contacts = ko.observableArray().extend({ minSelected: 1 });
调用验证器函数,我可以通过console.dir()
调用看到验证的正确结果,但结果似乎不会影响验证过程。
我还尝试创建一个始终为false的验证器,它在标准的observable上完美运行,但不适用于observableArray。
ko.validation.rules['never'] = {
validator: function (val, param) {
return false;
},
message: 'I will never be valid.'
};
self.single = ko.observable().extend({ never: 'ever' });
self.multiple = ko.observableArray().extend({ never: 'ever' });
我是否遗漏了有关可观察数组验证的内容?
答案 0 :(得分:1)
我解决了这个问题,所以我在这里发布答案,这有助于其他问题。
验证似乎确实有效,但没有显示任何反馈。我使用了与validating a computed field相同的过程(添加了我自己的跨度,它绑定到验证消息并且eveything现在按预期工作。
以下是我如何开始工作的示例标记:
<select data-bind="options: contactList,
optionsText: 'text',
optionsValue: 'value',
selectedOptions: contacts"
multiple>
</select>
<span data-bind="validationMessage: contacts" class="validationMessage"></span>