Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Override jquery date

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

like image 738
Mantisimo Avatar asked Jul 28 '11 21:07

Mantisimo


1 Answers

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.

like image 125
fretje Avatar answered Oct 23 '22 03:10

fretje