我正在使用基于 this 的自定义可观察值 numericObservable
,强制 knockout 将数字字段序列化为 json 中的数字,而不是字符串;我已经让那部分工作了。
我添加了验证以强制将 number
作为端口的字段类型:
self.port = ko.numericObservable(22).extend({ number: true });
..但是验证并没有 100% 有效。有时它似乎会识别非数字,有时它只是无法识别。如果我清除端口的值,将焦点切换到另一个字段,然后返回并输入一个数字,它就可以工作。
fiddle
http://jsfiddle.net/SAFX/q4QCY/13/
如果我对普通的可观察量进行验证,如下所示,它会起作用,所以我怀疑问题可能在于扩展numericObservable
。另外,example从中我得到了 numericObservable
使用 ko 2.2.2
,我的 fiddle 使用 ko 3.0.0
。
//works
self.port = ko.observable(22).extend({ number: true });
最佳答案
不幸的是parseFloat
函数只是忽略非数字符号。您的代码行必须使用“+”以避免这种情况:
var parsedValue = parseFloat(+newValue);
关于knockout.js - 数字可观察值不适用于 knockout 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20652554/