jQuery验证小数分隔符和Asp.net MVC

时间:2010-01-18 12:02:20

标签: jquery asp.net-mvc

新的Asp.net mvc 2.0输入验证就像一个魅力,除了jquery.validate的十进制分隔符。当我使用Microsoft MVC ajax库时,它工作正常。逗号是小数分隔符服务器端以及客户端。

<script src="/Scripts/MicrosoftAjax.js" type="text/javascript" ></script>
<script src="/Scripts/MicrosoftMvcAjax.js" type="text/javascript" ></script>
<script src="/Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>

当我使用它时(在主视图中加载jquery),我必须在客户端使用一个点。但是然后模型无效并返回到视图,创建一个有趣的循环。

<script src="/Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcJqueryValidation.js" type="text/javascript"></script>

我宁愿使用jquery来满足我的所有javascript需求,有没有办法让jquery.validate使用逗号,而不是点?我一直在谷歌搜索和阅读文档,但很奇怪我在这个问题上找不到多少,你会认为这是一个常见问题。

4 个答案:

答案 0 :(得分:2)

啊......全球化的乐趣!

在处理数字时(我甚至不会在日期开始),确定正确的小数分隔符的需要可能令人生畏。但是,有一种简单的方法可以确定任何客户端的小数分隔符:

function GetDecimalSeparator()
{
  return  (1 / 10).ToString().substring(1, 1);
}

通过这种方式,您将始终知道客户端的小数点分隔符,并相应地执行验证。

答案 1 :(得分:1)

您可能会在additional-methods.js找到答案。您将找到日期本地化的示例:搜索后面的<input name="pippo" class="{dateITA:true}" />jQuery.validator.addMethod("dateITA",。您也可以这样做来添加和使用自定义数字验证(对应于您使用的语言环境)。

答案 2 :(得分:0)

您可以将逗号添加到文件jquery.validate.min.js或jquery.validate.js中 dot 旁边的常规表达式中。 在下一个例子中,它用粗体字标记。 (\。 - &gt; [\。,])

number: function(value, element) {
            return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:**[\\.,]**\d+)?$/.test(value);
        },

小心这个原始的exppresion接受号码与千分隔符(,)。它会更好,如果你想使用逗号小数分隔符,请使用没有千位分隔符的RE。

答案 3 :(得分:0)

一种解决方案是修补jquery验证,尽管你不应该像Petr建议的那样直接编辑文件,因为如果你在未来的路上更新,这些修改将被覆盖。这是一个更好的解决方案:http://rebuildall.umbraworks.net/2011/03/02/jQuery_validate_and_the_comma_decimal_separator

作为快速修复,您可以在本地或全局禁用客户端验证,如下所述:http://www.campusmvp.net/asp-net-mvc-3-and-the-coma-in-decimals/