JavaScriptでフォームで無効な日付を絶対選択させないサンプル


<select name="year" onchange="dateCheck('year', 'month', 'day')">
  <option value="">--年</option>
  <option value="2015">2015年</option>
  <option value="2016">2016年</option>
</select>
<select name="month" onchange="dateCheck('year', 'month', 'day')">
  <option value="">--月</option>
  <option value="1">1月</option>
  <!-- 省略 -->
  <option value="12">12月</option>
</select>
<select name="day">
  <option value="">--日</option>
  <option value="1">1日</option>
  <!-- 省略 -->
  <option value="31">31日</option>
</select>
function dateCheck(year, month, day) {
  var y = Number(document.getElementsByName(year)[0].value);
  var m = Number(document.getElementsByName(month)[0].value);
  var day = document.getElementsByName(day)[0];
  var d = Number(day.value);
  if (y && m) {
    var ds = new Date(y, m, 0);
    var dsn = Number(ds.getDate());
    var html = '<option value="">--日</option>';
    for(var i = 1; i <= dsn; i++) {
      if (i === d) {
        html += '<option value="' + i + '" selected>' + i + '日</option>';
      }
      else {
        html += '<option value="' + i + '">' + i + '日</option>';
      }
    }
    day.innerHTML = html;
  }
}