【发布时间】:2020-03-19 01:09:17
【问题描述】:
我有一个表单,其中包含一些字段和用户可以添加的项目列表。要使表单有效,表单上的所有字段以及列表的所有项目中的所有字段都必须有效。当新项目添加到列表中时,它将无效,因为所有必填字段都将为空白。
不幸的是,淘汰赛验证似乎没有看到这一点,并将表单报告为有效。列表项中的各个字段将独立验证并显示“此字段为必填项”。消息,但包含所有内容的 validateObservable 将 isValid() 报告为 true。更奇怪的是,如果我通过编辑添加列表之前存在的字段之一导致表单无效,那么突然一切都开始正常工作了。
这是我正在处理的问题的一个示例:http://jsfiddle.net/97Lr15zq/5/
ko.validation.init({
registerExtenders: true,
messagesOnModified: true,
insertMessages: true,
parseInputAttributes: true,
messageTemplate: null,
grouping: {
deep: true,
live: true
}
},
true);
var viewModel = {
items: ko.observableArray([]),
test: ko.observable('e').extend({ required: true }),
add: function(){
viewModel.items.push({
firstName: ko.observable('').extend({ required: true }),
lastName: ko.observable('').extend({ required: true })
});
},
submit: function() {
if (viewModel.errors.isValid()) {
alert('Thank you.');
}
else {
alert('Please check your submission. Errors: ' + viewModel.errors.errors().length);
viewModel.errors.errors.showAllMessages();
}
}
};
viewModel.errors = ko.validatedObservable({items: viewModel.items, test: viewModel.test});
ko.applyBindings(viewModel);
如何获得淘汰验证以在添加新列表项后立即开始监控它们?
【问题讨论】:
标签: validation knockout.js knockout-validation