как сделать дни, которые нельзя выбрать в DatePicker - PullRequest
1 голос
/ 22 февраля 2012

Я бродил, как включить только несколько дней в неделю? Например, как включить понедельник, среду и четверг, а остальные дни отключить на определенной неделе в определенном месяце?

Я играл с setDate(DateOption dateOption), setMaxDate(DateOption dateOption) и setMinDate(DateOption dateOption), но безрезультатно.

Спасибо.

1 Ответ

1 голос
/ 14 мая 2012

AFAIK, вы не можете сделать это с помощью стандартного jQuery datepicker.

Недавно я сам столкнулся с этой проблемой, я не смог найти решение с помощью jQuery datepicker по умолчанию, поэтому вместо этого я создал свой собственный плагин wiQuery, используя: http://keith -wood.name / datepick.html, Это требует немного больше работы, но, углубившись в код wiQuery, вы можете найти классы, которые вам нужно эмулировать, чтобы этот альтернативный указатель даты работал.

Я скопировал:

  • DatePickerOptions
  • DatePicker
  • DatePickerJavascriptResourceReference
  • JsScopeUiDatePickerOnChange

.classes от org.odlabs.wiquery.ui.datepicker.

Я добавил 'Multi' к началу этих имен классов и использовал справочное руководство по настройкам и параметрам обратного вызова по адресу: http://keith -wood.name / datepickRef.html (также можно увидеть более точная, но менее лаконичная версия, нажав быструю ссылку на первую ссылку), чтобы мой недавно созданный класс MultiDatePicker генерировал правильный javascript.

Например, по умолчанию в DatePicker есть следующий код:

public JsStatement statement() {
    return new JsQuery(this).$().chain("datepicker",
            options.getOptions().getJavaScriptOptions());
}

Который используется для создания следующего javascript:

(function($) {
$(document).ready(function() {$('#startDate').datepicker({defaultDate: '+1', minDate: '+1', showOn: 'both', buttonImageOnly: true, buttonImage: '/Calendar.png'});
});
})(jQuery);

(где выбранные параметры находятся в фигурных скобках).

Я изменил это в своем MultiDatePicker.java на:

public JsStatement statement()
{
    return new JsQuery(this).$().chain("datepick", options.getOptions().getJavaScriptOptions());
}

Я разместил строки:

public void setMultiSelect(int i)
{
    put("multiSelect", i);
}

public int getMultiSelect()
{
    return getInt("multiSelect");
}

в мои multiDatePickerOptions и некоторые тупые методы получения и установки в классе MultiDatePicker, которые устанавливают эти параметры, и это позволяет вам установить, сколько дат можно установить. Сделав все это, я смог:

MultiDatePicker multiDatePicker = new MultiDatePicker("datePicker");
multiDatePicker.setMultiSelect(2);
add(multiDatePicker);

, который генерирует следующий код JavaScript:

$('#startDate').datepick({multiSelect: 999, showTrigger: '/Calendar.png', dateFormat: 'dd/mm/yyyy', onDate: function(date, current) { /*I used this callback function to only allow certain dates to be selected by the user.*/}});

Удачи!

...