如何在DatePicker中让日子无法选择?

时间:2012-02-22 11:01:28

标签: datepicker wicket wiquery

我在徘徊如何让一周内的某些日子启用?例如,如何启用星期一和星期四的星期一,其余时间在某个月的某个星期被禁用?

我玩过setDate(DateOption dateOption)setMaxDate(DateOption dateOption)setMinDate(DateOption dateOption),但没有结果。

谢谢。

1 个答案:

答案 0 :(得分:1)

AFAIK你不能使用默认的jQuery datepicker。

我最近遇到了这个问题,我找不到使用默认jQuery datepicker的解决方案,所以我用http://keith-wood.name/datepick.html创建了自己的wiQuery插件。它需要更多的工作,但通过深入了解wiQuery代码,您可以找到模拟所需的类,以使这个备用日期选择器正常工作。

我复制了:

  • DatePickerOptions
  • 的DatePicker
  • DatePickerJavascriptResourceReference
  • JsScopeUiDatePickerOnChange
来自org.odlabs.wiquery.ui.datepicker的

.classes。

我将'Multi'附加到这些类名的开头,并在http://keith-wood.name/datepickRef.html使用了设置和回调选项的参考指南(通过点击第一个快速参考,也可以看到更简洁但更简洁的版本link)使我新创建的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类中的一些愚蠢的getter和setter,这允许您设置可以设置的日期数。通过这一切,我可以做到:

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.*/}});
祝你好运!