2013-01-14 47 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

不客气:) –