2017-12-31 71 views
0

私は自分のフォームに生年月日入力フィールドを持っています。入力年の降順を選択

ただし、選択すると、上部に1930が表示されます。HTML選択ボックスには、JavaScriptを使用して1930年から2017年の範囲のリストを表示します。理想的には、私は2017年がトップになる必要があります。

私はこれが簡単な修正だと確信していますが、どこが間違っているのか分かりません。

ありがとうございました。代わりに、forループ

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

完璧に動作します!ありがとうございました –

関連する問題