2010-04-23 5 views
11

Я использую jQuery UI 1.8, и я хотел бы скрыть год от пользователя как во всплывающем, так и в текстовом поле. По существу вместо того, чтобы выбирать день, месяц и год, я хочу, чтобы пользователь просто выбирал день и месяц.jQuery UI - Datepicker - Скрыть год

Скрыть год в текстовом поле достаточно просто, код, показанный ниже, сделает это. Я в тупике о том, как скрыть год от всплывающего окна, поэтому он сказал бы «Апрель» вместо «Апрель 2010».

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

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

Любая помощь была бы принята с благодарностью.

ответ

6

Я не думаю, что этот вариант выставлен va 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 все равно :))

НТН

+0

Что делать, если я хочу, чтобы некоторые сборщики дат имели год, а другие - не год? – David

+0

В этом случае я попытался бы расширить плагин, провизировать опцию, которую вы можете установить, а затем использовать эту опцию где-то вокруг этой строки, если (вторичный ||! ChangeYear). Альтернативой могло бы быть использование как существующего датпикера, так и вашей собственной версии с кодом для года, который был удален, в этом случае вам нужно будет переименовать свой взломанный виджет, чтобы иметь другое имя, я havent попробовал это, но, вероятно, это свойство: var PROP_NAME = 'datepicker'; – DannyLane

6

Очень старый вопрос, но мне просто нужно, чтобы сделать это сам, и вот альтернативный метод, который может быть полезным кто-то; быстрое и грязное исправление, которое позволит вашим другим игрокам datepickers продолжить работу, если вам не нужна функция changeYear, чтобы установить changeYear на true на datepickers, вы НЕ хотите показывать год, затем добавьте CSS:

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

Я наткнулся на эту тему в своем поиске хорошего способа сделать это, и вот что я придумал.

в моем 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

+0

Отлично. Точно, что я был после. – dreza

+0

Спасибо Патриция! Только то, что мне нужно! –

0

Атрибут

changeYear:false; 

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

иногда меняют выпадающий, чтобы охватить. <span></span> Итак, добавьте этот код css.

span.ui-datepicker-year { display:none } 
Смежные вопросы