使用jQuery验证货币字段的客户端验证

时间:2011-02-28 15:29:10

标签: asp.net-mvc-3 jquery-validate currency

我在asp.net mvc 3 app上使用jquery.validate时出现问题。

至少在西班牙,我们使用“,”从小数中分割出一个数字。好吧,使用服务器端验证,如果我提出类似的东西:

12.55当服务器验证它时,它表示该值无效。如果我把:12,55就可以了。

到目前为止一切顺利,但如果我使用jQuery验证,则表示12,55无效,12.55是有效的。因此,客户端通过验证但服务器没有,或者客户端没有通过,但服务器会通过。

那么......我可以更改这种验证的语言环境吗?

谢谢。

PS :服务器如何知道我想使用“,”而非“。”进行验证?我不记得我是否在某处指定了。

2 个答案:

答案 0 :(得分:1)

可能您应该包含本地化文件:

http://ajax.aspnetcdn.com/ajax/jQuery.Validate/1.7/localization/messages_es.js

http://ajax.aspnetcdn.com/ajax/jQuery.Validate/1.7/localization/methods_de.js

在德国,人们对数字使用相同的规则,因此您可以使用methods_de.js或仅包含

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

Here Microsoft CDN为1.6版本托管的文件列表。版本1.7有the same files

更新:参见演示here

答案 1 :(得分:0)

您可以尝试配置Web应用程序以使用客户端Web浏览器的区域设置:

<system.web>
    <globalization requestEncoding="utf-8" 
                   responseEncoding="utf-8"
                   culture="auto" 
                   uiCulture="auto" />
    ...
</system.web>

这将使用浏览器文化进行服务器端验证。就客户端验证而言,它已经使用了浏览器文化。所以这确保两者都匹配。