2010-07-02 68 views
9

在标准jquery.ui.datepicker小部件上,只有下一个和上一个按钮用于选择一个月份。如果我启用年,它将显示在选择框中。jquery ui datepicker next and previous year

什么是在日历两侧实现两个按钮的好方法?一个用于选择下一个月,另一个用于选择下一个年份,在右侧彼此相邻显示,对于左侧的前一个按钮执行相同的操作。

$(function() { 
    $("#dp").datepicker({changeYear: true}); 
}) 
+0

你不喜欢这样做使用changeYear和changeMonth在一起,而不是在两边的两个按钮日历? – 2011-08-09 16:07:09

+3

也许这会帮助你:http://stackoverflow.com/questions/3423670/jquery-ui-datapicker-how-to-add-next-previous-year-buttons jQuery UI不支持它,但其他插件。 – Tim 2012-01-31 14:54:20

回答

1

看看JavaScript文件中prev/next按钮的创建位置。

<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_1329396041654.datepicker._adjustDate('#datepicker', -1, 'M');" title="Prev"><span class="ui-icon ui-icon-circle-triangle-w">Prev</span></a> 

以上是生成的上一个按钮的示例。

你需要做的仅仅是创建一个/下一个按钮,有以下内容:

_adjustDate('#datepicker',-1,'Y'); 
_adjustDate('#datepicker',+1,'Y'); 

因为它们的功能。 检查样本http://jqueryui.com/demos/datepicker/dropdown-month-year.html并使用prev按钮上的firefox/chrome检查元素 - 将其调整为使用'Y'而不是'M',您将看到它的工作原理。

希望这会有所帮助!

3

如果你只是想更换一个和上一个按钮的当前行为,使他们点击你的时候会去一年,您可以使用StepMonths选项:

$(".selector").datepicker({ stepMonths: 12 }); 
5

最好的解决方案我发现是Leniel的答案与其他一些特性结合在一起,这里是我的代码为我的日期元素

jQuery(document).ready(function(){ 
    jQuery('input.date').each(function(){ 
     jQuery(this).datepicker({dateFormat:'dd/mm/yy', changeMonth: true, stepMonths: 12, showAnim:"slideDown" }); 
     jQuery('#ui-datepicker-div .ui-helper-hidden-accessible').css("position", "absolute !important"); 
     jQuery('#ui-datepicker-div').css('clip', 'auto'); 
    }); 

希望这可以帮助其他人,因为它没有我一样多!

P.S.其他的东西是这样的datepicker在所有的浏览器(ie6 +,ff3 +,chrome4 +,safari,歌剧)