jquery validation yyyy-MM-dd格式日期在ie中無法驗證通過

原因

查看validation的源代碼找到日期驗證函數發現,驗證表達式是通過Date的構造函數來實例化日期 !/Invalid|NaN/.test(new Date(value).toString())

 

 date: function (value, element) {

                return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());

            }

而這個實例化在ie6、7、8下面得到的時NaN

 

 

 

解決方法

為瞭讓我們的日期格式支持yyyy-MM-dd這種格式看來隻能重寫這個date函數

 

$.validator.methods.date = function (value, element) {

            var matches = /(\d{4})[-\/](\d{2})[-\/](\d{2})/.exec(value);

            if (matches == null) return this.optional(element)|| false;

            return this.optional(element) || true;

        };

 或是用dateISO驗證規則來替換默認的date驗證

 

$.validator.methods["date"] = function (value, element) {

            return $.validator.methods.dateISO.apply(this, arguments);

        };

發佈留言