2017-12-31 46 views
0

나는 내 양식에 출생 입력 필드의 날짜가 있습니다. 그러나, 당신이 그것을 선택하면 1930이 상단에 나타납니다 2017선택 입력 해 내림차순

-1930에 이르기까지 년의 목록을 표시 할 때 자바 스크립트를 사용하는 HTML 선택 상자가 있습니다. 이상적으로, 2017이 꼭대기에 있어야합니다.

나는이 간단한 수정 확신 해요,하지만 난 내가 잘못 갔어요 위치를 확인할 수없는 것.

도움 주셔서 감사합니다. 대신 루프에 대한

var Days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // index => month [0-11] 
 
$(document).ready(function() { 
 
    var option = '<option value="day">DD</option>'; 
 
    var selectedDay = "day"; 
 
    for (var i = 1; i <= Days[0]; i++) { //add option days 
 

 
    if (i < 10) { 
 

 
     option += '<option value="0' + i + '">0' + i + '</option>'; 
 

 
    } else { 
 

 
     option += '<option value="' + i + '">' + i + '</option>'; 
 

 
    } 
 

 
    } 
 
    $('#day').append(option); 
 
    $('#day').val(selectedDay); 
 

 
    var option = '<option value="month">MM</option>'; 
 
    var selectedMon = "month"; 
 
    for (var i = 1; i <= 12; i++) { 
 

 
    if (i < 10) { 
 

 
     option += '<option value="0' + i + '">0' + i + '</option>'; 
 

 
    } else { 
 

 
     option += '<option value="' + i + '">' + i + '</option>'; 
 

 
    } 
 

 
    } 
 
    $('#month').append(option); 
 
    $('#month').val(selectedMon); 
 

 
    var d = new Date(); 
 
    var option = '<option value="year">YYYY</option>'; 
 
    selectedYear = "year"; 
 
    for (var i = 1930; i <= d.getFullYear(); i++) { // years start i 
 
    option += '<option value="' + i + '">' + i + '</option>'; 
 
    } 
 
    $('#year').append(option); 
 
    $('#year').val(selectedYear); 
 
}); 
 

 
function isLeapYear(year) { 
 
    year = parseInt(year); 
 
    if (year % 4 != 0) { 
 
    return false; 
 
    } else if (year % 400 == 0) { 
 
    return true; 
 
    } else if (year % 100 == 0) { 
 
    return false; 
 
    } else { 
 
    return true; 
 
    } 
 
} 
 

 
function change_year(select) { 
 
    if (isLeapYear($(select).val())) { 
 
    Days[1] = 29; 
 
    if ($("#month").val() == 2) { 
 
     var day = $('#day'); 
 
     var val = $(day).val(); 
 
     $(day).empty(); 
 
     var option = '<option value="day">DD</option>'; 
 
     for (var i = 1; i <= Days[1]; i++) { //add option days 
 
     option += '<option value="' + i + '">' + i + '</option>'; 
 
     } 
 
     $(day).append(option); 
 
     if (val > Days[month]) { 
 
     val = 1; 
 
     } 
 
     $(day).val(val); 
 
    } 
 
    } else { 
 
    Days[1] = 28; 
 
    } 
 
} 
 

 
function change_month(select) { 
 
    var day = $('#day'); 
 
    var val = $(day).val(); 
 
    $(day).empty(); 
 
    var option = '<option value="day">DD</option>'; 
 
    var month = parseInt($(select).val()) - 1; 
 
    for (var i = 1; i <= Days[month]; i++) { //add option days 
 
    option += '<option value="' + i + '">' + i + '</option>'; 
 
    } 
 
    $(day).append(option); 
 
    if (val > Days[month]) { 
 
    val = 1; 
 
    } 
 
    $(day).val(val); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 

 
<label>Date of birth (DD-MM-YYYY)</label> 
 
<select id="day" name="day"></select> 
 
<select id="month" name="month"></select> 
 
<select id="year" name="year"></select>

답변

2

는 순서

for (var i = d.getFullYear(); i >= 1930; i--) { // years start i 

초기 할당이 중지 가장 높은 올해를 반전이 구문을 사용할 때 1930 <하고 - - 그것이 루프가 아닌 위로 올라가는 것을 의미합니다.

+0

완벽하게 작동합니다! 고맙습니다 –