2012-11-10 75 views
1

我正在使用knockout.js和knockout.validation插件。我有一個搜索表單,其中包含3個輸入字段Name, Date and Country。我想確保用戶在繼續搜索前必須填寫至少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); 
} 

我創建了一個錯誤屬性還包含了所有的確認信息,如果驗證失敗。現在,當用戶提交搜索表單,如果驗證失敗,我不想在輸入字段下方顯示所有錯誤消息,而是想在表單頂部顯示一條消息,如「您必須輸入至少一個搜索過濾器「

所以我的問題是我怎麼能隱藏所有的消息,並在窗體的頂部顯示一條消息?或者,如果還有其他更好的方法可以做到我想要做的,請讓我知道嗎?

回答

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