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>
完璧に動作します!ありがとうございました –