2012-02-22 5 views
1

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

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

спасибо.

ответ

1

AFAIK вы не можете сделать это с помощью jQuery datepicker по умолчанию.

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

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

  • 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, которые устанавливают эти options, и это позволяет вам установить, сколько дат может быть установлено. Делая все это, я был тогда в состоянии сделать:

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

который генерирует следующий код: яваскрипт

$('#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.*/}}); 

Удачи!

Смежные вопросы