【问题标题】:How to hide validation messages如何隐藏验证消息
【发布时间】:2012-10-30 11:59:47
【问题描述】:

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

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

【问题讨论】:

    标签: javascript jquery knockout.js knockout-validation


    【解决方案1】:

    不要将 each 字段设置为必需,而是使用条件来确定是否提供了 one 属性。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 2014-05-28
      • 2020-08-02
      相关资源
      最近更新 更多