2010-04-23 12 views
11

Korzystam z jQuery UI 1.8 i chciałbym ukryć rok przed użytkownikiem zarówno w wyskakującym okienku, jak i w polu tekstowym. Zasadniczo zamiast wybierać dzień, miesiąc i rok, chcę, aby użytkownik wybrał dzień i miesiąc.jQuery UI - Datepicker - Ukryj rok

Ukrywanie roku w polu tekstowym jest dość łatwe, kod pokazany poniżej to zrobi. Zastanawiam się, jak ukryć rok przed wyskakującym okienkiem, żeby zamiast "kwietnia 2010" było napisane "kwiecień".

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

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

Każda pomoc zostanie bardzo doceniona.

Odpowiedz

6

Nie sądzę, że ta opcja jest ujawniona va api. Wierzę, że najłatwiej jest zmienić arkusz stylów. Zmień klasę ui-datepicker-year do display: none Innym rozwiązaniem byłoby, aby zmienić źródło więc isnt wygenerowana w ogóle, zrobić, że można usunąć tę część kodu:

// 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>'; 
} 

nie próbowałem usunięcie kod, ale powinien działać. próbowałam ukrywać za pomocą CSS i działa (w firefox i tak :))

HTH

+0

Co zrobić, jeśli chcę, aby osoby wybierające daty miały rok, a inne nie miały roku? – David

+0

W takim przypadku chciałbym rozszerzyć wtyczkę, wyświetlić opcję, którą można ustawić, a następnie użyć tej opcji gdzieś w pobliżu tej linii, jeśli (secondary ||! ChangeYear). Alternatywą byłoby użycie zarówno istniejącego datepika i własnej wersji z kodem usuniętego roku, w tym przypadku trzeba zmienić nazwę uszkodzonego widżetu, aby mieć inną nazwę, nie próbowałem tego, ale prawdopodobnie jest to właściwość: var PROP_NAME = "datepicker"; – DannyLane

6

Bardzo stare pytanie, ale ja po prostu musiał to zrobić sam i tu jest alternatywną metodą, która może być przydatna ktoś; szybka i brudna poprawka, która pozwoli twoim dalszym datepickerom kontynuować pracę, pod warunkiem, że NIE będziesz potrzebować funkcji changeYear, aby ustawić changeYear na true na danych, których NIE chcesz wyświetlać, a następnie dodać CSS:

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

Natknąłem się na ten wątek w moich poszukiwaniach dobrego sposobu na zrobienie tego, i oto co wymyśliłem.

w moim css Mam

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

i to w jaki sposób skonfigurować moje datepickers że nie chcę, aby pokazać na rok:

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

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

Zasadniczo dodać klasę tuż przed wyświetleniem i zdejmij go, gdy go ukryje, aby inne narzędzia do wybierania daty na tej stronie nie miały na niego wpływu.

wystarczy, aby ktokolwiek chciał ukryć rok tylko w określonych przeglądarkach na stronie i nie chce mieszać się z wewnętrznymi elementami jQuery.

+0

+1 To było NAPRAWDĘ pomocne !! – MaVRoSCy

+0

Doskonały. Dokładnie to, po czym byłem. – dreza

+0

Dzięki Patricia! Dokładnie to, czego potrzebowałem! –

0

atrybut

changeYear:false; 

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

czasami zmiany rozwijana do zakresu. <span></span> Dodaj ten kod.

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