2011-02-28 105 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