knockout.js - 数字可观察值不适用于 knockout 验证

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

我正在使用基于 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/

相关文章:

javascript - 如何在 Knockout 中绑定(bind) Html 5 视频控件属性

knockout.js - knockout 映射对象响应

jQuery Knockout - 动态添加和删除 html 属性

knockout-validation - 使用淘汰赛验证在 html 中设置错误消息

javascript - 消息显示之外的 knockout validation

javascript - 使用 Google Places API 和 KnockoutJS 列出地名

jquery - Knockout 和 JQueryUI Drag - 是什么导致该元素不可拖动?

knockout.js - KnockoutJS : ko. ToJSON(这个)不起作用?

javascript - knockout 模板绑定(bind)不更新 UI

knockout.js - knockout 验证 - 空时不验证输入 + 提交时评估