2013-01-14 49 views
2

我是新來淘汰賽,並試圖鍛鍊如何使用驗證。我們有以下的代碼 -允許用空字符串敲除minLength

var MyObjectModel = function(myObject){ 
    var self = this; 
    self.myNumber = ko.observable(myObject.number).trimmed(); 
    self.myNumber.extend({ 
     minLength: { 
      params: 7, 
      message: "My Number is too short." 
     }, 
     maxLength: { 
      params: 7, 
      message: "My Number is too long." 
     } 
    }); 

    self.errors = ko.validation.group(self); 
} 

現在我想更改代碼,以便要麼myObject.number的長度應該是正好爲7,或現場應該是空的。我如何去做這個改變?

任何幫助,將不勝感激。如果您認爲某些事情不清楚,請讓我知道,以便我可以詳細闡述。

+1

你的問題,你現在用的minLength和的minLength的做法是什麼?什麼是不正確的工作?因爲它看起來工作正常:http://jsfiddle.net/X9mDy/1/只有輸入7位數字纔有效。 – nemesv

+0

minLength和maxLength適合我。我還想要的是使該字段可選。所以如果用戶輸入了任何值,它應該只有7個字符長,否則它應該是空的。我嘗試了要求:錯誤,但它沒有幫助。任何想法,我可能會出錯? –

回答

3

您可以使用自定義模式,以它:

var MyObjectModel = function(myObject){ 
    var self = this; 
    self.myNumber = ko.observable(myObject.number).trimmed(); 
    self.myNumber.extend({ 
     pattern: { 
      params: '^[0-9]{7}$|^$', 
      message: "My Number must have 7 chars or stay empty." 
     } 
    }); 

    self.errors = ko.validation.group(self); 
} 
+0

非常感謝!真的幫了我 –

+0

不客氣:) –