2011-02-28 106 views
1

我有我的asp.net mvc 3应用程序使用jquery.validate的问题。客户端验证使用jQuery验证货币字段

至少在西班牙,我们使用“,”从小数中分出数字。好的,使用服务器端验证,如果我把这样的东西:

12.55当服务器验证它,它说,该值是无效的。如果我放:12,55它的作品。

到目前为止很好,但如果我使用jQuery验证,它说12,55是无效的,12.55是有效的。所以,客户端通过验证,但服务器不通过,或客户端不通过,但服务器会通过。

所以......我可以改变这种验证的语言环境吗?

谢谢。

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

回答

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

+0

我尝试了methods_de,但是像“40,5”这样的数字低于(0.01),所以Range规则启动。我不知道为什么它认为这是低于。那么,是一个进步。 – 2011-02-28 20:16:13

+0

@Jesus Rodriguez:为了帮助您,我准备了演示http://www.ok-soft-gmbh.com/jQuery/validateDeNumber.htm。这是你想要的吗? – Oleg 2011-02-28 20:33:54

+0

@Jesus Rodriguez:如果你在服务器上设置规则(比如Range),你应该检查它在客户端的外观以找出问题,但是我想在服务器上你应该将Range设置为美国格式。 – Oleg 2011-02-28 20:41:02

0

你可以尝试配置您的Web应用程序使用客户端的Web浏览器的语言环境:

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

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

+0

不适合我。谷歌搜索,我看到有人正在使用某种jquery.glob.js和其他禁用不显眼的JavaScript。我尝试了全球化的东西,但不适合我。谢谢。 – 2011-02-28 15:51:41