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
很老的问题,但我只是需要这个做我自己和这里的,可能是有用的替代方法某人;一个快速和肮脏的修复,这将使你的其他datepickers继续工作,只要你不需要changeYear功能设置changeYear
到true
你不想一年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的内部。
属性
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
});
});
如果我想让一些日期选择器有一年而其他人没有一年呢? – David 2010-04-23 12:53:47
在这种情况下,我会尝试扩展插件,提供一个可以设置的选项,然后在该行的某处使用该选项if(secondary ||!changeYear)。另一种方法是使用现有的datepicker和你自己的版本,删除当年的代码,在这种情况下,你需要重命名被黑客入侵的小部件,使其具有不同的名称,但我没有尝试过,但它的可能性如下:var PROP_NAME ='datepicker'; – DannyLane 2010-04-23 13:51:18