【问题标题】:numeric observable not working with knockout validation可观察到的数值不适用于淘汰赛验证
【发布时间】:2014-01-06 07:13:53
【问题描述】:

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

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

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

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

小提琴

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

如果我对一个普通的 observable 使用验证,如下所示,它可以工作,所以我怀疑问题可能在于扩展 numericObservable。此外,我从中获得numericObservableexample 使用ko 2.2.2,我的小提琴使用ko 3.0.0

//works
self.port = ko.observable(22).extend({ number: true });

【问题讨论】:

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


    【解决方案1】:

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

    var parsedValue = parseFloat(+newValue);
    

    【讨论】:

    • 经过进一步分析,这是有效的。我切换到parseInt(+newValue),不需要花车。我正在做一些额外的测试以确保验证正常工作,ty
    猜你喜欢
    • 1970-01-01
    • 2012-11-02
    • 2017-12-01
    • 2017-09-19
    • 2014-09-28
    • 2012-09-08
    • 2018-03-30
    • 2023-03-11
    相关资源
    最近更新 更多