2011-06-07 103 views
0

我一直在試圖實現一個jQuery函數來驗證日期格式,但我遇到了一個奇怪的問題。當數「8」或「9」包含在一天或一個月,(例如:08/06/2011),它說的日期無效...jquery日期驗證錯誤

的演示,請訪問: http://www.geektantra.com/projects/jquery-form-validate/advanced_demo/

感謝您的幫助!

+0

試試這個http://stackoverflow.com/questions/511439/custom-date-format-with-jquery-validation-plugin – 2011-06-07 12:49:42

+0

一個精度,它只有onccurs '08'和'09'爲日或月。它看起來可以連接到二月的閏年,從28日到29日不等...任何想法? – Carine 2011-06-07 13:18:23

回答

4

當值0809出現問題時,幾乎可以肯定忘記在parseInt()上指定基數參數。

如果未指定它,它會嘗試從輸入中自動檢測基礎,如果它找到前導零,它會嘗試將其解析爲八進制數。對於數字0007這不是一個問題,它甚至與基數爲10時的計算結果相同,但由於明顯的原因,0809是無效的八進制數。

爲了避免這個問題,在未來,請確保您始終將基數參數強制解析數作爲基數爲10,無論輸入:

var value = parseInt(someString, 10); 

檢查出你的JavaScript各地的29行你的HTML文件,並將其更改爲以下:

jQuery("#ValidDate").validate({ 
    expression: "if (!isValidDate(parseInt(VAL.split('-')[2], 10), parseInt(VAL.split('-')[0], 10), parseInt(VAL.split('-')[1], 10))) return false; else return true;", 
    message: "Please enter a valid Date" 
});