我發現這個問題是jQuery驗證。它調用JavaScript日期構造函數來檢查日期是否有效:
// http://docs.jquery.com/Plugins/Validation/Methods/date
date: function(value, element) {
return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
},
由於JavaScript的日期構造期待形式的日期YYYY-MM-DD它在葡萄牙語格式DD-MM-YYY日期返回無效。
IE是一個例外,它不返回無效,但與我們引入的日期不同。
的soluction是創建一個jquery.validate-pt.js的代碼與正確的爲我們的格式來覆蓋驗證:
$.validator.methods.date = function (value, element) {
return this.optional(element) || (/^\d{1,2}[\/-]\d{1,2}[\/-]\d{4}(\s\d{2}:\d{2}(:\d{2})?)?$/.test(value)
&& !/Invalid|NaN/.test(new Date(value.replace("/", "-").split("-")[2], value.replace("/", "-").split("-")[1], value.replace("/", "-").split("-")[0])));
}
我想這也可能是有益的 - HTTP:// geekswithblogs.net/EltonStoneman/archive/2009/10/29/jquery-date-validation-in-chrome.aspx –
嗨Joaquim,感謝您發佈您的解決方案。你能否告訴你需要放置重寫代碼的位置以及如何確保它確實覆蓋驗證? – mattpm