选择输入年份降序

时间:2017-12-31 11:44:59

标签: javascript html forms

我的表格上有一个出生日期输入字段。有一个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>

1 个答案:

答案 0 :(得分:2)

而不是循环,使用此语法来颠倒顺序

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

初始分配是最高年份,当i&lt; 1930年, - 意味着它在循环中而不是向上。