1

我正在使用 knockout.js 和 knockout.validation 插件。我有一个搜索表单,其中包含 3 个输入字段Name, Date and Country。我想确保用户在继续搜索之前必须填写至少 1 个字段。required出于这个原因,我在所有 3 个字段上应用了本机验证规则。这是我的代码:

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

所以我的问题是如何隐藏所有消息并在表单顶部显示一条消息?或者,如果有任何其他更好的方法来做我想做的事情,而不是让我知道?

4

1 回答 1

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);
    });
}
于 2012-11-10T08:53:22.380 回答