Как скрыть сообщения проверки

Я использую плагин 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, которое содержит все сообщения проверки, если проверка не пройдена. Теперь, когда пользователь отправляет форму поиска и если проверка не удалась, я не хочу показывать все сообщения об ошибках под полями ввода, вместо этого я хочу показать одно сообщение в верхней части формы, что-то вроде «Вы должны ввести в хотя бы один фильтр для поиска".

Итак, мой вопрос: как я могу скрыть все сообщения и отобразить одно сообщение в верхней части формы? Или, если есть другой лучший способ сделать то же самое, что я пытаюсь сделать, пожалуйста, дайте мне знать?


person user1740381    schedule 10.11.2012    source источник


Ответы (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);
    });
}
person Jesse M.    schedule 10.11.2012