проверить дату jquery datepicker по отключенным дням

У меня есть средство выбора даты, в котором отключены даты закрытия магазина. Пользователи по-прежнему могут вводить данные в это поле, и средство выбора даты не проверяет даты, которые отключены в средстве выбора. На самом деле он даже не соблюдает максимальные/минимальные даты... Как мне это сделать?

$("#date").datepicker({
    beforeShowDay : function(date) {
        var day = date.getDay();
        return [(day != 0)];
    },
    minDate : '08/10/2011',
    onClose: function(dateText, inst) {
        try {
            $.datepicker.parseDate('dd/mm/yy', dateText);
        } catch (e) {
            $(this).datepicker("setDate", '');
        };
    }
});

Редактировать:

В итоге я провел собственную проверку ввода текста. Смотри ниже:

    var today = '08/10/2011';

$("#date").datepicker({
    beforeShowDay : function(date) {
        var day = date.getDay();
        return [(day != 0 && day != 1 && day != 6)];
    },
    minDate : today,
    onClose : function(dateText) 
    {
        if(dateText)
            try {
                var date = $.datepicker.parseDate('mm/dd/yy', dateText);
                var day = new Date($(this).val()).getDay();
                if(day == 0 || day == 1 || day == 6) 
                {
                    alert('Sorry, the clinic is closed on ' + dateText);
                    $(this).datepicker("setDate", '');
                }
                if(date.getTime() - new Date(today).getTime() < 0) 
                {
                    alert('Please select a future date: ex. (' + today + ')');
                    $(this).datepicker("setDate", '');
                }
            } catch (e) {
                alert('Please provide a valid date: ex. (' + today + ')');
                $(this).datepicker("setDate", '');
            };
    }
});

person stagl    schedule 10.08.2011    source источник


Ответы (1)


Проблема в том, что ограничения jQuery применяются к всплывающему окну выбора даты, но не к вводу текста, к которому оно привязано. Таким образом, вы можете либо выполнить свою собственную проверку, используя что-то вроде среды проверки jQuery, либо более простое решение — отключить текстовое поле, чтобы пользователь мог указать дату только с помощью селектора.

<div>
    <p>Date: <input type="text" id="date" disabled="disabled"/></p>
</div>

$(function() {
    $( "#date" ).datepicker({            
        showOn: "button",
        buttonImage: "http://jqueryui.com/demos/datepicker/images/calendar.gif",
        buttonImageOnly: true,
        minDate: ...,
        maxDate: ...
    });
});
person Clayton    schedule 10.08.2011