Ограничения на Dijit DateTextBox [Действительные дни недели] - PullRequest
2 голосов
/ 19 мая 2009

Быстрый вопрос о Dijit.Form.DateTextBox

http://docs.dojocampus.org/dijit/form/DateTextBox

На этой странице содержится следующее: «также проверяется на соответствие предоставленным разработчиком ограничениям, таким как минимальное, максимальное, действительные дни недели и т. Д.»

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

Буду признателен за любую помощь в этом. Спасибо!

Ответы [ 3 ]

4 голосов
/ 19 мая 2009

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

DateTextBox не позволяет настраивать isDisabledDate в это время. Это только позволяет установить мин / макс. Ты бы вероятно, придется патч или подкласс DateTextBox, чтобы предоставить свой собственный реализация isDisabledDate и проверка во время проверки.

Пример такого подкласса DateTextBox можно увидеть по адресу http://dojotoolkit.org/forum/dijit-dijit-0-9/dijit-support/datetextbox-mondays-only-selectable#comment-19508.

Если это слишком много для вас, DateTextBox происходит от dijit.form.ValidationTextBox, поэтому мы можем использовать regExpGen этого виджета для создания валидатора - это не помешает нам выбрать недопустимые даты, но приведет к тому, что dijit пометить виджет как недействительный и дать пользователю «Введенное значение недопустимо».

dijit.byId('toDate').regExpGen = function() { 
  if (dojo.date.locale.format(this.value, {datePattern: "E", selector: "date"}) == 6)
    return ".*";
  return "0";
}
2 голосов
/ 21 февраля 2013

Как это происходит, функция isDisabledDate объекта Calendar внутри DateTextBox просто вызывает rangeCheck самого DateTextBox. Итак, для ваших целей это будет работать:

dijit.byId('toDate').rangeCheck = function(date,constraints) {
  var day=date.getDay();
  return day===0;
}

Вы должны были бы добавить логику ограничения обратно, если бы вы ТАКЖЕ хотели использовать материал min / max, но это решает проблему, как указано, и она довольно короткая.

1 голос
/ 03 сентября 2009

Функция, которую я надеюсь получить в ближайшее время

http://bugs.dojotoolkit.org/ticket/4765

...