2011-08-30 41 views
3

我使用asp.net-MVC3助手和jQuery驗證插件(什麼來開箱當您使用模板(創建,編輯,等等。),我有一個名爲MiniPrice字段是一個數據類型小數?jQuery驗證對數字字段一個嚴重的錯誤,其中第一個字符是一個十進制

所以它驗證對,我在文本框中輸入一個號碼的客戶端。

,如果我進入1.25它正常工作。如果我進入0.75它工作正常,但如果我進入0.75它給這個驗證錯誤:

enter image description here

爲何不顯眼的jQuery驗證覺得0.75是不是一個有效的數字?

我發現了jQuery核心網站上this bug that was filed years ago和被關閉不jQuery的核心問題,而是一個插件的問題。這似乎

+2

相似/ duplicate到http://stackoverflow.com/questions/3129150/jquery-validation-allow-number-without-the-leading-zero/4056007 – boflynn

回答

5

是驗證的行爲。我會用jQuery打開一個問題,看他們是否可以(或者想要)解決它。

在此同時,你可以像自己的驗證方法,這樣它的行爲如你所願:

$.validator.addMethod('myValidateNumber', function (value) { 
    return /^(\d\.|\.)?\d+$/.test(value); 
}, 'Please enter a valid number'); 

此正則表達式出現做你的願望 - 有可能是一個更好的辦法寫它以及。我不是正則表達式的主人,但這應該就夠了。

然後,只需在任何你正在驗證class使用myValidateNumber。你可以閱讀更多關於擴展jQuery驗證here

編輯:連接到MVC3 - 看看這個StackOverflow後:Perform client side validation for custom attribute

從本質上講就是我們正在做的是創造我們自己的這一驗證,並且你可以使用自己的屬性模型。

編輯2:看起來如果您使用validator.addMethod('number'...,它會更改數字驗證的默認行爲。這意味着你不應該改變你的MVC模型。所以基本上,將此添加到您的頁面加載:

$.validator.addMethod('number', function (value) { 
    return /^(\d\.|\.)?\d+$/.test(value); 
}, 'Please enter a valid number'); 

應該解決問題。

+0

它似乎有點瘋狂,我是我第一個遇到這個問題。我正在使用MVC3助手,所以我沒有明確設置任何字段級別的驗證。你能解釋一下多一點(或者發送一個鏈接)你怎麼把你輸入到驗證插件的代碼。另外,我將不得不搜索我有小數字段的所有地方,或者我可以在一箇中心位置執行此操作 – leora

+0

@ooo我添加了一些編輯。 – vcsjones

+0

如果你想要多個前導數字(即12.345),請使用這個re:/ ^(\ d * \。。\ \。)?\ d * $/ – lambinator

相關問題