2014-11-07 2 views
0

datepicker를 사용하여 시작일을 설정하고 (이후 날짜 만 허용) 특정 월의 선택한 날짜를 기준으로 종료일을 설정해야합니다. 종료일은 선택한 마지막 날이됩니다. 시작일로부터 개월. datepicker를 사용하여 시작일을 기준으로 종료일을 설정하십시오.

function getLastDayOfYearAndMonth(year, month) 
{ 
    return(new Date((new Date(year, month + 1, 1)) - 1)).getDate(); 
} 
$(document).ready(function() { 
    $("#dataStart").datepicker({ 
     minDate: 1, 
     onSelect: function(theDate) { 
      var defalulDate = new Date(); 
      defalulDate.getLastDayOfYearAndMonth(date.getFullYear(), date.getMonth())); 
      $("#dataEnd").datepicker(defaultDate: defalulDate); 
     }, 
     beforeShow: function() { 
      $('#ui-datepicker-div').css('z-index', 9999); 
     }, 
     dateFormat: 'mm/dd/yy' 
    }); 

}); 

은 어떻게 든 내가 종료 날짜 기능을 작동시킬 수 아니에요 :

<fieldset> 
    <label for="dataStart">Start Date</label> 
    <input type="text" style="width: 88px;" class="datepicker" id="dataStart" size="10" name="dataStart" /> 
</fieldset> 
<fieldset> 
    <label for="dataEnd">End Date</label> 
    <input type="text" style="width: 88px;" class="end_date" id="dataEnd" size="10" name="dataEnd" value="<!-- last day of mont from dataStart -->" readonly /> 
</fieldset> 

jQuery 코드 : 같은

HTML 코드가 보인다.

답변

0

및 w/버그 "월 윤년"오 :

HTML :

,732,

jQuery를 :

$(document).ready(function() { 
    $("#dataStart").datepicker({ 
     minDate: '+1d', 
     changeMonth: true, 
     changeYear: true, 
     dateFormat: 'mm/dd/yy', 
     onSelect: function(date){ 
      var dates = date.split('/'); 
      var lastDate = new Date(dates[2], dates[0], 0); 
      var y = lastDate.getFullYear(), m = lastDate.getMonth(), d = lastDate.getDate(); 
      m = ('0'+ (m+1)).slice(-2); 

      $('#dataEnd').val(m+'/'+d+'/'+y); 

      var start = $('#dataStart').datepicker('getDate'); 
      $('#dataEnd').datepicker({dateFormat: 'mm/dd/yy'}).datepicker('setDate', m+'/'+d+'/'+y); 
      var end = $('#dataEnd').datepicker('getDate'); 
      var days = ((end - start)/1000/60/60/24)+1; 

      $('#calculated').text(days);   
     } 
    }); 
}); 

JSFiddle

PS. jQuery Forum에서 Sμßhrånil∂에게 감사드립니다.

0

This is the working fiddle....

정확한 버전 아래 HTML

<p>From Date: <input type="text" id="fromDatePicker"></p> 
<p>To Date: <input type="text" id="toDatePicker"></p> 

자바 스크립트

var dateToday = new Date(); 
$(function() { 
    $("#fromDatePicker").datepicker({   
     minDate: dateToday, 
     onSelect: function(selected,evnt) { 
     var date = $(this).datepicker('getDate'), 
      day = date.getDate(), 
      month = date.getMonth() + 1,    
      year = date.getFullYear();    
      updateToDate(day,month,year); 
    } 

    }); 
}); 

function updateToDate(day,month,year){  
    var myDate = new Date(); 
    var updatedDay; 
    if(month==9|| month==4 ||month==6 || month==11){ 
     updatedDay = 30; 
    } 
    else if (month==2){ 
     updatedDay = 28; 
    } 
    else{ 
     updatedDay = 31; 
    } 
    var prettyDate =month+ '/' +updatedDay + '/' +year; 
$("#toDatePicker").val(prettyDate); 
} 

$(function() { 
    $("#toDatePicker").datepicker({   
     minDate: dateToday 
    }); 
}); 
+0

이 경우 2 월을 처리하는 방법은 무엇입니까? 난 그것이 "hardcoded"개월을 기반으로 updatedDay 대신 + 1m 오프셋과 getDate (0)를 사용해야한다고 생각합니다. – JackTheKnife

+0

업데이트 된 코드를 살펴보십시오. 이제는 2 월을 처리 할 수 ​​있습니다 ..... –

+0

글쎄, 2 월은 윤년이 29 일이므로 솔루션이 완벽하지는 않지만 좋은베이스가 있어야 작동 할 수 있습니다. . – JackTheKnife

관련 문제