mvc3 jquery 不显眼的验证区域设置小数字段

2024-05-04

我正在使用不引人注目的验证来开发本地化的 mvc3 Web 应用程序。 在 web.config 中我有:

<globalization culture="pl-PL" uiCulture="pl" />

使用的是jquery 1.4.4和jqueryvalidation 1.6。

问题在于十进制数字分隔符。

我可以看到 jquery 验证忽略了区域性,并期望点字符始终是小数点分隔符。我需要用逗号代替。例如,我认为德语也是如此。

我创建了自己的methods_pl.js 文件:

jQuery.extend(jQuery.validator.methods, {
number: function(value, element) {
    return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
}
});

以上就是解决根本不识别小数的基本问题。

但是当我尝试在模型 Decimal Price 属性上使用 RangeAttribute 时,它​​仍然不起作用。 怎么解决这个问题呢?


如果你设置

key="UnobtrusiveJavaScriptEnabled" value="false"

the DecimalModelBinder上一个答案中发布的内容将起作用,但您将禁用客户端验证。

要解决您的问题,您需要包含正确的 jQuery 区域设置。 看一个斯科特·汉塞尔曼的这篇文章 http://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx or 这个帖子 http://blogs.msdn.com/b/rickandy/archive/2011/02/17/using-mvc-3-with-non-english-locales.aspx他们应该在实施过程中为您提供一些帮助。

您应该从 NuGet 添加 Jquery.globalize 插件,然后在 DOMready 函数中添加类似的内容以正确验证数字(至少它对我有用)

 $.validator.methods.number = function (value, element) {
        if (Globalize.parseFloat(value)) 
            return true;
        return false;
    }
 Globalize.culture('fr-FR');

然后在页面中添加相关脚本

<script src="@Url.Content("~/Scripts/jquery-1.7.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.globalize/globalize.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.globalize/cultures/globalize.culture.fr-FR.js")" type="text/javascript"></script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mvc3 jquery 不显眼的验证区域设置小数字段 的相关文章

随机推荐