jQuery UI - Datepicker - 隐藏年份

问题描述:

我使用jQuery UI 1.8,我想在弹出窗口和文本框中隐藏用户的年份。基本上不是选择一天,一个月和一年,而是希望用户选择日期和月份。jQuery UI - Datepicker - 隐藏年份

在文本框中隐藏年份非常简单,下面显示的代码可以做到这一点。我难以理解如何从弹出窗口隐藏年 - 所以它会说“四月”而不是“2010年4月”。

$(function() { 
     $("#beginDateRange").datepicker({ dateFormat: 'mm/dd' }); 
}); 

<input type="text" name="beginDateRange" id="beginDateRange" /> 

任何帮助将不胜感激。

我不认为这个选项暴露在api中。 我相信最简单的方法就是更改样式表。 的ui-datepicker-year类更改display: none 另一种选择是编辑源,以便它不是在所有的渲染, 这样做,你可以删除这部分代码:

// year selection 
if (secondary || !changeYear) 
html += '<span class="ui-datepicker-year">' + drawYear + '</span>'; 
else { 
// determine range of years to display 
var years = this._get(inst, 'yearRange').split(':'); 
var thisYear = new Date().getFullYear(); 
var determineYear = function(value) { 
var year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) : 
(value.match(/[+-].*/) ? thisYear + parseInt(value, 10) : 
parseInt(value, 10))); 
return (isNaN(year) ? thisYear : year); 
}; 
var year = determineYear(years[0]); 
var endYear = Math.max(year, determineYear(years[1] || '')); 
year = (minDate ? Math.max(year, minDate.getFullYear()) : year); 
endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); 
html += '<select class="ui-datepicker-year" ' + 
'onchange="DP_jQuery_' + dpuuid + '.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'Y\');" ' + 
'onclick="DP_jQuery_' + dpuuid + '.datepicker._clickMonthYear(\'#' + inst.id + '\');"' + 
'>'; 
for (; year <= endYear; year++) { 
html += '<option value="' + year + '"' + 
(year == drawYear ? ' selected="selected"' : '') + 
'>' + year + '</option>'; 
} 
html += '</select>'; 
} 

我没有试图消除代码,但它应该工作。 我也尝试使用CSS隐藏它,这不工作(在Firefox反正:))

HTH

+0

如果我想让一些日期选择器有一年而其他人没有一年呢? – David 2010-04-23 12:53:47

+0

在这种情况下,我会尝试扩展插件,提供一个可以设置的选项,然后在该行的某处使用该选项if(secondary ||!changeYear)。另一种方法是使用现有的datepicker和你自己的版本,删除当年的代码,在这种情况下,你需要重命名被黑客入侵的小部件,使其具有不同的名称,但我没有尝试过,但它的可能性如下:var PROP_NAME ='datepicker'; – DannyLane 2010-04-23 13:51:18

很老的问题,但我只是需要这个做我自己和这里的,可能是有用的替代方法某人;一个快速和肮脏的修复,这将使你的其他datepickers继续工作,只要你不需要changeYear功能设置changeYeartrue你不想一年datepickers显示出来,然后添加CSS:

select.ui-datepicker-year { display:none } 

我在我的搜索过程中遇到了这个线程,这是我想出的一个好方法。

在我的CSS

我有一个

.BirthdayDatePicker .ui-datepicker-year 
{ 
display:none; 
} 

,这是我怎么设置我datepickers,我不希望显示的一年:

$('.DateTextBox.NoYear').datepicker({ 
      beforeShow: function (input, inst) { 

       inst.dpDiv.addClass('BirthdayDatePicker'); 
      }, 
      onClose: function(dateText, inst){ 
       inst.dpDiv.removeClass('BirthdayDatePicker'); 
      } 
     }); 

基本上我添加类就在它显示之前,并在隐藏它时将其取下,以便页面上的其他日期选择器不受其影响。

只是让任何人都需要隐藏年仅在页面上的特定选择器上,并不想惹恼jQuery的内部。

+0

+1这真的很有帮助! – MaVRoSCy 2012-10-23 12:31:17

+0

优秀。到底是什么我以后。 – dreza 2013-05-01 23:09:45

+0

谢谢帕特里夏!正是我需要的! – 2014-01-28 01:59:11

属性

changeYear:false; 

select.ui-datepicker-year { display:none } 

有时会改变下拉跨越。 <span></span> 所以添加这个CSS代码。

span.ui-datepicker-year { display:none } 

VIKSME Hide year http://jsfiddle.net/tocv/e5cvA/

CSS

.ui-datepicker-year 
{ 
display:none; 
} 

HTML

<div id="datepicker"></div> 

</div> 

的JavaScript

$(function() { 
    $("#datepicker").datepicker({ 
     changeMonth: true, 
     changeYear: false 
    }); 
    });