jQuery Validate (Date Range)

后端 未结 6 700
长发绾君心
长发绾君心 2020-12-14 03:47

Im using the jQuery validate plugin and was wondering if there was a way to validate if the date entered into a field was a date like yyyy-mm-dd AND the the date falls betwe

6条回答
  •  一个人的身影
    2020-12-14 04:33

    Hold your horses, guys! :)

    Do not forget, that Date.parse cannot work properly with different locales, it only parses properly specific date format.

    If you use various date formats (culture-specific) - it's better to stick to jquery datepicker date handling.

    So, supposing you've loaded correct culture-specific jquery datepicker object (for instance, jquery.ui.datepicker-nb-NO.js, where date format is DD.MM.yyyy and is not parsed by Date.parse) and initialized it, proper approach is:

    $.validator.addMethod('dateRange', function (value, element, parameterValue) {
            if (this.optional(element) && !value) {
                return true;
            }
            var dateFormat = $(element).datepicker('option', 'dateFormat');
            try {
                var startDate = $.datepicker.parseDate(dateFormat, parameterValue[0]).getTime();
                var endDate = $.datepicker.parseDate(dateFormat, parameterValue[1]).getTime();
                var enteredDate = $.datepicker.parseDate(dateFormat, value).getTime();
                return (startDate <= enteredDate) && (enteredDate <= endDate);
            } catch (error) {
                return true;
            }
        });
    

    I've put parseDate stuff inside try block, because there's no normal way to figure out if the date has been parsed properly.

提交回复
热议问题