我有一个validatedObservables列表。例如其中一个:
self.CompanyName = ko.observable().extend({ required: true });
self.ContactPerson = ko.observable().extend({ required: true });
self.step1Validation = ko.validatedObservable([
self.CompanyName,
self.ContactPerson
]);
除了“必需”之外,我还有其他验证器。例如,电子邮件验证器。当用户输入错误的电子邮件并移至其他字段时,会出现红色错误消息。这意味着会生成错误消息并显示在附近的控件中。
但是,当我尝试一次验证所有validatedObservable时,错误消息不会出现在附近的控件上。如何解决这个问题?
验证看起来像这样(这是self
函数):
if (self.step1Validation.isValid()) {
return true;
} else {
// SHOULD SOMEHOW SHOW ALL ERROR MESSAGE FOR THIS STEP (step1Validation)
return false; // this doens't allow user to move to next step in wizard
}
修改 这是一些简化的jsfiddler示例:http://jsfiddle.net/ng73s0hq/1/
在此示例中,如果您添加了错误的电子邮件并移至其他字段,则可以看到“红色错误消息”。但是,如果按“提交”,则验证失败,但没有错误消息(应该是必需的失败+电子邮件验证失败)。
答案 0 :(得分:3)
您需要做的只是点击,您应该调用此$more
来显示错误消息。
简化版 viewModel:
self.step1Validation.errors.showAllMessages()
工作样本 here
答案 1 :(得分:0)
您需要先验证ko.validatedObservable对象,如果无效,则使用showAllMessages(true)方法显示验证错误。
var result = ko.validation.group(self.step1Validation, {deep: true});
if (self.step1Validation.isValid()) {
return true;
} else {
result.showAllMessages(true);
// SHOULD SOMEHOW SHOW ALL ERROR MESSAGE FOR THIS STEP (step1Validation)
return false; // this doens't allow user to move to next step in wizard
}