Отключение нескольких дат / диапазона дат в DateTextBox в dojo

#dojo

#dojo

Вопрос:

Я хочу использовать DateTextBox в Dojo, чтобы пользователь мог выбрать дату.И я хочу ограничить выбор даты только на следующие 10 дней (исключая выходные).

Итак, если моя дата начинается с понедельника (30/6/2014), то она должна быть включена с понедельника (30/6/2014) по пятницу (04/07/2014), затем отключена для субботы (05/07/2014)-воскресенье (06/07/2014) и снова включена для понедельника (07.07.2014) по пятницу (07.11.2014).).

— заранее спасибо.

Ответ №1:

Вы можете отключить определенные даты, переопределив rangeCheck функцию, например:

 var SUNDAY = 0, SATURDAY = 6, TWO_WEEKS = 1000 * 60 * 60 * 24 * 14;
registry.byId("myDate").set('rangeCheck', function(date, constraints) {
    var isValid = date.getDay() !== SUNDAY amp;amp; date.getDay() !== SATURDAY; // Weekend check
    var today = new Date();
    today.setHours(0, 0, 0, 0);
    var diffms = date.getTime() - today.getTime();
    isValid amp;= diffms >= 0 amp;amp; diffms <= TWO_WEEKS; // Two week check
    return isValid;
});
  

Я использую текущий день здесь, чтобы получить следующие две недели, но вы могли бы добавить конкретную дату в свои ограничения, которые также передаются rangeCheck функции.

Полный пример можно найти на JSFiddle:http://jsfiddle.net/rkC9h /

Комментарии:

1. Спасибо за решение. Но предположим, я хочу отключить календарь для любых праздников. Допустим, послезавтра праздник, так как я могу отключить этот конкретный день / дату.

2. Функция выше должна возвращать true для действительных дат и false для недействительных дат. Итак, если праздничные дни должны быть недействительными, вам следует каким-то образом условно проверить это (например, предоставив массив праздников, который вы можете использовать для перебора).