проверить дату JQuery DatePicker по отключенным дням - PullRequest
0 голосов
/ 10 августа 2011

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

$("#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", '');
        };
    }
});

Edit:

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

    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", '');
            };
    }
});

1 Ответ

0 голосов
/ 10 августа 2011

Проблема в том, что ограничения 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: ...
    });
});
...