jquery通过parseFloat验证全球化问题

jquery通过parseFloat验证全球化问题,jquery,asp.net-mvc,validation,globalization,Jquery,Asp.net Mvc,Validation,Globalization,我正在尝试使用jquery全球化插件(https://github.com/jquery/globalize)使用asp.net mvc3客户端进行不引人注目的验证。我已经将en-CA和fr-CA文化联系起来,并且看到插件接受的有效数字与服务端验证接受的数字之间存在一些差异。下面是一些使用两种文化的不同输入调用Globalize.parseFloat方法的示例,以及我得到的结果(粗体表示服务器端验证不验证数字) fr CA Globalize.parseFloat(“7.12”,10,“fr-

我正在尝试使用jquery全球化插件(https://github.com/jquery/globalize)使用asp.net mvc3客户端进行不引人注目的验证。我已经将en-CA和fr-CA文化联系起来,并且看到插件接受的有效数字与服务端验证接受的数字之间存在一些差异。下面是一些使用两种文化的不同输入调用Globalize.parseFloat方法的示例,以及我得到的结果(粗体表示服务器端验证不验证数字) fr CA

  • Globalize.parseFloat(“7.12”,10,“fr-CA”)返回7.12
  • Globalize.parseFloat(“7..12”,10,“fr-CA”)返回NaN
  • Globalize.parseFloat(“7,12”,10,“fr-CA”)返回7.12
  • parseFloat(“7,12,10,“fr-CA”)返回NaN
  • Globalize.parseFloat(“712,12”,10,“fr-CA”)返回712.12
恩卡

  • Globalize.parseFloat(“7.12”,10,“en-CA”)返回7.12
  • Globalize.parseFloat(“7..12”,10,“en-CA”)返回NaN
  • Globalize.parseFloat(“7,12”,10,“en-CA”)返回712
  • Globalize.parseFloat(“7,12,10,“en-CA”)返回712
  • Globalize.parseFloat(“7,1,2.12”,10,“en-CA”)返回712.12
逐步通过parseFloat代码看起来这是预期的输出,但我看不出这是如何预期的,所以我希望我错过了一些东西。。。还是有意这样做


谢谢

因为parseFloat在里面,所以它首先运行,由Globalize包装。parseFloat并不是真正设计用来处理复杂字符串的。

客户端的parseFloat方法只是忽略了千个分隔符,这就是为什么Globalize.parseFloat(“7,1,2.12”,10,“en-CA”)返回712.12(此区域性中的千个分隔符是一个“,”)

fr CA文化的千分隔符是一个空间,这就是Globalize.parseFloat(“712,12”,10,“fr CA”)返回712.12的原因

小数点只能出现一次。对于en CA,这是一个“.”,对于fr CA,这是一个“,”。因此,所有包含多个小数点的示例都将返回NaN


我唯一无法解释的是为什么Globalize.parseFloat(“7.12”,10,“fr-CA”)返回7.12。这很奇怪,因为在这种文化中,小数点和千位分隔符都不是“.”,所以应该返回NaN。

看起来这是全球化插件中的一个已知问题(请参阅)。看起来我必须运行自己的正则表达式,以确保它的格式适合客户端验证(幸好我目前只需要处理两种语言:)