数字可观察不使用敲除验证

时间:2013-12-18 07:57:43

标签: knockout.js knockout-mapping-plugin knockout-validation

我正在使用基于this的自定义observable numericObservable,它强制knockout将数字字段序列化为json中的数字,而不是字符串;我有那部分工作。

我已添加验证以强制number作为端口的字段类型:

 self.port = ko.numericObservable(22).extend({ number: true });

..但验证不起作用100%。它似乎有时会获得非数字,有时它却无法识别。如果我清除端口的值,将焦点切换到另一个字段,然后返回并输入一个数字,它可以工作。

小提琴

http://jsfiddle.net/SAFX/q4QCY/13/

如果我对一个普通的可观察对象使用验证,如下所示,它可以工作,所以我怀疑问题可能在于扩展numericObservable。此外,我numericObservable ko 2.2.2使用ko 3.0.0使用//works self.port = ko.observable(22).extend({ number: true }); ,我的小提琴使用{{1}}。

{{1}}

1 个答案:

答案 0 :(得分:2)

不幸的是parseFloat函数只是忽略非数字符号。您的代码行必须使用“+”来避免这种情况:

var parsedValue = parseFloat(+newValue);