【问题标题】:jQuery validate decimal separator and Asp.net MVCjQuery 验证小数点分隔符和 Asp.net MVC
【发布时间】:2023-03-22 16:00:01
【问题描述】:

新的 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 使用逗号,而不是点?我一直在谷歌搜索和阅读文档,但很奇怪我在这个问题上找不到太多,你会认为这是一个常见的问题。

【问题讨论】:

  • 我觉得一个好办法就是把这个问题也贴到scottgu的博客上。几天前他在验证上发帖,并且在发帖的第一天很快就回复了。

标签: jquery asp.net-mvc


【解决方案1】:

啊……全球化的乐趣!

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

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

这样,您将始终知道客户端的小数分隔符是什么,并相应地执行验证。

【讨论】:

  • 好的,谢谢。但是我如何让 jquery.validate 使用这个分隔符?如果它是一个点并且 MVC 服务器端需要一个逗号怎么办?这变得非常令人困惑;)。
【解决方案2】:

您可能会在additional-methods.js 中找到答案。您将找到日期本地化的示例:搜索&lt;input name="pippo" class="{dateITA:true}" /&gt;jQuery.validator.addMethod("dateITA",,如下所示。您可以执行相同的操作来添加和使用自定义数字验证(对应于您使用的语言环境)。

【讨论】:

    【解决方案3】:

    一个解决方案是修补 jquery validate,尽管您不应该像 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/

    【讨论】:

      【解决方案4】:

      您可以将 comma 添加到文件 jquery.validate.min.js 或 jquery.validate.js 中 dot 旁边的正则表达式中。 在下一个示例中,它用粗体标记。 (\. -> [\.,])

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

      小心这个带有千位分隔符 (,) 的原始表达式接受数字。如果你想使用 comma 小数分隔符,最好使用没有千位分隔符的 RE。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-07
        • 2011-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多