2010-04-23 8 views
11

저는 jQuery UI 1.8을 사용 중이며 팝업과 텍스트 상자 모두에서 사용자를 숨기고 싶습니다. 본질적으로 하루, 달 및 연도를 선택하는 대신 사용자가 하루와 월을 선택하기를 원합니다.jQuery UI - Datepicker - 숨기기 연도

텍스트 상자에서 연도를 숨기는 것만으로도 충분합니다. 아래 코드는 그렇게 할 것입니다. 나는 팝업에서 그 해를 어떻게 숨길 지 잘 모르겠다. 그래서 "2010 년 4 월"대신에 "4 월"이라고 말할 것이다.

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

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

모든 도움을 주시면 감사하겠습니다.

답변

6

이 옵션은 API에서 노출되지 않습니다. 가장 쉬운 방법은 스타일 시트를 변경하는 것입니다. 나는 제거 시도하지 않은

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

: display: noneui-datepicker-year 클래스를 변경 또 다른 옵션은 전혀 렌더링 밤은 그래서 당신이 코드의이 부분을 제거 할 수 할, 를 소스를 편집하는 것 코드가 작동해야합니다. 여기에 내가 CSS를 사용하여 숨어 시도 않았고 그 작업을 수행 (어쨌든 파이어 폭스에서 :))

HTH

+0

일부 날짜 선택 도구에 연도가 있고 다른 날짜 선택자가 연도가없는 경우에는 어떻게합니까? – David

+0

그런 경우 플러그인을 확장하고, 설정할 수있는 옵션을 제공 한 다음이 옵션을 어딘가에 사용할 수 있습니다 (보조 ||! changeYear). 대안은 기존의 datepicker와 자신의 버전을 올해의 코드와 함께 사용하는 것입니다.이 경우 해킹 된 위젯의 이름을 다른 이름으로 변경해야합니다. havent는 그 이름을 바꿀 것입니다. var PROP_NAME = 'datepicker'; – DannyLane

6

아주 오래된 질문,하지만 난 그냥이 나 자신을 위해 필요하고하는 것은 유용 할 수있는 다른 방법입니다 어떤 사람; 변경 사항이 필요하지 않다면 다른 datepickers가 계속 작동하도록 할 수 있습니다 .Yearpickers에서 changeYeartrue으로 설정하고 1 년을 표시하지 않으려면 CSS를 추가 한 다음 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

감사합니다. Patricia! 내가 필요한 것! –

0

changeYear:false; 

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

가끔 드롭 다운이 걸쳐 변경 속성. <span></span> 그래서이 CSS 코드를 추가하십시오.

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