ExtJS Parsing Date Incorrectly

extjsextjs3

When I enter "31/12/2012" in my field (date format is MM/DD/YYYY), it changes the date to "7/12/2014" in the field. I would rather it error with a "not valid" error message.

I have inherited this code from a previous developer:

function dateRangeCheck(val, field) {
    field.vtypeText = '';

    var date = field.parseDate(val);
    if (!date) {
        field.vtypeText = val + ' is not a valid date - it must be in the format (MM/DD/YYYY).';
        return false;
    }

    var retVal = true;

    if (field.fromField) {
        var fromField = Ext.getCmp(field.fromField);
        var fromDate = fromField.parseDate(fromField.getValue());
        // If we don't have a fromDate to validate with then return true
        if (!fromDate)
            return true;

        retVal = (date >= fromDate);

        if (retVal)
            fromField.clearInvalid();
    }
    else if (field.toField) {
        var toField = Ext.getCmp(field.toField);
        var toDate = toField.parseDate(toField.getValue());
        // If we don't have a toDate to validate with then return true
        if (!toDate)
            return true;

        retVal = (date <= toDate);

        if (retVal)
            toField.clearInvalid();
    }

    if (!retVal) {
        field.vtypeText = 'From Date must be less than or equal to To Date.';
    }
    return retVal;
}

When I try to use the default 'daterange' vtype, as soon as I type a "3" in the field, it throws a JS runtime exception 'object doesn't support this property or method'.

Best Answer

Note that you can set Date.useStrict = true globally and the DateField will use that by default.

enter image description here

For Ext 4+ it would be Ext.Date.useStrict = true instead.

Related Topic