我的表格上有一个出生日期输入字段。有一个HTML选择框,它使用javascript来显示1930年至2017年的年份列表。
但是,当您选择它时,1930会出现在顶部。理想情况下,我需要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>
答案 0 :(得分:2)
而不是循环,使用此语法来颠倒顺序
for (var i = d.getFullYear(); i >= 1930; i--) { // years start i
初始分配是最高年份,当i&lt; 1930年, - 意味着它在循环中而不是向上。