我正在使用knockout.js和knockout.validation插件。我有一个搜索表单,其中包含Name, Date and Country
的3个输入字段。我想确保用户在继续搜索之前必须至少填写1个字段。出于这个原因,我在所有3个字段上应用了原生验证规则required
。这是我的代码:
function SearchModel() {
var self = this;
self.Name = ko.observable().extend({ required: true });
self.Date = ko.observable().extend({ required: true });
self.Country = ko.observable().extend({ required: true });
self.Errors = ko.validation.group(self);
}
我还创建了一个Errors属性,该属性包含验证失败时的所有验证消息。现在,当用户提交搜索表单并且验证失败时,我不想在输入字段下面显示所有错误消息,而是我想在表单顶部显示单个消息,例如“你必须输入至少一个搜索过滤器“。
所以我的问题是如何隐藏所有消息并在表单顶部显示单个消息?或者,如果还有其他更好的方法来做我想做的事情,请告诉我吗?
答案 0 :(得分:1)
不是将每个字段设置为必需,而是使用条件来确定是否已提供一个属性。
function SearchModel() {
var self = this;
self.Name = ko.observable();
self.Date = ko.observable();
self.Country = ko.observable();
self.Errors = ko.validation.group(self);
self.needsMore = ko.computed(function () {
return !(self.Name() ||
self.Date() ||
self.Country);
});
}