2012-02-12 175 views
0

我正在努力與自定義jQuery驗證程序,它是我第一次去一個,我覺得我很接近。我試圖驗證一個數字(投標)與我正在建立的拍賣系統的最低出價,問題是最低出價總是十進制數字,例如15.50,但出價可能是一個整數16.我認爲我的邏輯正在下降,因爲我正在驗證整數對小數,我試圖將輸入的數字轉換爲小數,但似乎打破了一切。以下是我的功能的副本。MVC 3 jQuery自定義驗證器

$.validator.addMethod("bidgreaterthan", function (value, element, params) { 
var parts = element.name.split("."); 
var bid = value.toFixed(2); 
var prefix = ""; 
if (parts.length > 1) 
    prefix = parts[0] + "."; 
var currentbidvalue = $('input[name="' + prefix + params.propertytested + '"]').val(); 
if (!bid || !currentbidvalue) 
    return true; 
if (bid < (currentbidvalue)) 
    return false; 
}); 

我可能會好起來,它可能是其他問題,但任何幫助,將不勝感激。

回答

0

在Javascript中比較浮點數(帶小數的數)和整數(整數)應該沒有任何轉換。

16 > 15.50 // -> true 

但是,在輸入字段上調用val()可能會產生一個字符串。如果你不知道什麼格式你即將進行比較是數字,它總是一個好主意,強制轉換爲浮動(雖然使用Javascript可能會爲你轉換):

parseFloat("16") > parseFloat("15.50") // -> true 

這應該是最安全的方法也是在你的情況,因爲即使將一個整數轉換爲一個float與自然還是回到正確的結果,以下是正確的:

parseFloat(16) // -> 16.0 

所以你的情況,你可能能夠做沿東西線作者:

var bid   = parseFloat(value); 
currentbidvalue = parseFloat(currentbidvalue); 

return currentbidvalue > bid; 

但是,在進行任何轉換之前,應該檢查價值/出價值是否存在。

1

內置的遠程驗證機制有什麼問題,這可能會使這容易很多?出價驗證將在遠程驗證控制器中進行。就拿網絡上有一看一些文章:

http://deanhume.com/Home/BlogPost/mvc-3-and-remote-validation/51

+0

感謝您的答覆,我已經標記爲,因爲它確實解決了我發佈的代碼錯誤的答案polarblau的響應。但是我已經標記了您的回覆以及我忘記了遠程驗證,並且我同意在這裏它也同樣有用。 – 2012-02-13 09:18:34