为什么我的字符串值通过敲除验证,但整数值不?

问题描述:

使用knockout 2.2.1与最新的knockout-validation.js。为什么我的字符串值通过敲除验证,但整数值不?

请参见下面的jsfiddle我的问题的工作示例:

http://jsfiddle.net/tbstudee/keRPY/4/

被装入整数值没有经过验证现有的数据时,正如你所看到的,但该字符串值。这只有在viewModel使用现有数据进行初始化时才会发生。

我知道问题出在我的isValid标志上,因为注释掉了加载时的验证错误。

self.isValid = ko.computed(function() { 
    return ko.validation.group(
     self, 
     { 
      observable: true, 
      deep: true 
     }).showAllMessages(true); 
}, self); 

我能做些什么来解决这个问题,除了种子我的viewModel字符串而不是整数?

maxLengthminLength用于字符串,对于需要使用的数字minmax,否则验证最终会将值转换为字符串。看看this fiddle

self.myInt = ko.observable(data.myInt).extend({ 
     required: true, 
     number: true, 
     min: 100000, 
     max: 999999 
    }); 
+0

这实际上也抵消了另外一个问题,因为你有'号码:您的字符串值TRUE',但由于'maxLength'检查是有效的。 – Tyrsius 2013-03-27 16:07:43