如何隐藏验证消息

时间:2012-11-10 08:08:41

标签: javascript jquery knockout.js knockout-validation

我正在使用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属性,该属性包含验证失败时的所有验证消息。现在,当用户提交搜索表单并且验证失败时,我不想在输入字段下面显示所有错误消息,而是我想在表单顶部显示单个消息,例如“你必须输入至少一个搜索过滤器“

所以我的问题是如何隐藏所有消息并在表单顶部显示单个消息?或者,如果还有其他更好的方法来做我想做的事情,请告诉我吗?

1 个答案:

答案 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);
    });
}