I've found this useful bit of code that allows uk dates to work in Chrome but I'm not sure how to implement it. It overrides the default date functionality.
date: function(value, element) {
//ES - Chrome does not use the locale when new Date objects instantiated:
//return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
var d = new Date();
return this.optional(element) || !/Invalid|NaN/.test(new Date(d.toLocaleDateString(value)));
},
How can I add this into jQuery validate to override the default functionality.
Here is where I found the code sample
You should call the validator.addMethod method after loading the jquery.validate library like so:
$(function () {
// Replace the builtin US date validation with UK date validation
$.validator.addMethod(
"date",
function (value, element) {
var bits = value.match(/([0-9]+)/gi), str;
if (!bits)
return this.optional(element) || false;
str = bits[1] + '/' + bits[0] + '/' + bits[2];
return this.optional(element) || !/Invalid|NaN/.test(new Date(str));
},
"Please enter a date in the format dd/mm/yyyy"
);
});
Note that I used another way of actually validating the input, as the code in your question will not work (toLocaleDateString doesn't take a parameter). You could also change this to use the datejs library as Mrchief pointed out in the comments.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With