2012-05-04 57 views
2

我正在使用jQuery不顯眼的驗證版本2.0的MVC3。我也有最新的jquery.validate(v 1.9)。我有此代碼的彈出形式:

$(document).ready(function() { 
    $('#createForm').submit(function() { 
     $.validator.unobtrusive.parse($('#createForm')); 
(more) 

(第三行是必要的,這樣由JavaScript將被驗證添加的表單字段。)

驗證工作正常,除了一個值,如$ 1,000.00輸入到視圖模型中綁定到小數屬性的輸入標記是無效,而1,000.00有效。很顯然,「$」在驗證器的眼中將值作爲字符串進行轉換。

我已經研究了很多個小時,而且我只發現了另外一個類似的問題(也是在SO上,而且沒有回答)。我無法相信每個MVC3開發者在模態對話中處理貨幣價值時都遇到過這種情況,否則我們現在肯定會有一些解決方案,對吧?

我已通過創建DecimalBinder解決了服務器一側的問題。現在我需要一個客戶端驗證解決方案。我一直在尋找jquery.validate.unobtrusive的API,但我似乎無法找到一個鉤子。我不想修改任何標準的JavaScript庫。

+0

我們使用一個金錢html擴展方法,它在輸入前立即創建一個$符號,並插入一個表示其貨幣值的屬性。在用這個屬性改變元素的時候,如果在輸入中找到它,我們會剝離$符號。我知道這並不能回答你的問題,但我認爲不允許輸入美元符號是標準。 – DMulligan

+0

我有同樣的問題。 到目前爲止,這部分代碼看起來很有前途'$ .validator.methods.number' – Frenchie

回答

0

自定義驗證方法如何在驗證前首先去掉任何$字符?

var currentVal = (control's actual value); 
    currentVal = currentVal.replace('$',''); 

然後繼續驗證。明顯的缺點是需要定製驗證器。