2015-05-12 2 views
1

У меня есть три выпадающих списка HTML, чтобы выбрать год, месяц и дату. Если выбранный год равен текущему году, второй и третий списки показывают только месяц и дату до текущей даты. Я хочу закодировать это в javascript. Вот проблема, с которой я столкнулся, когда пользователь выбирает дату или месяц сначала, как это будет выполняться?Подтвердить дату в раскрывающемся списке html

+1

Разместите код и кто-то может помочь вам –

+0

Я думаю, что вы должны ограничьте диапазон дат. Если вы дадите лучшее объяснение, я могу помочь. Лучше сделать скрипку – murli2308

+0

Коды говорят больше, чем просто слова..post ваш код – jaggs

ответ

0

Пример ниже. Если сначала выбран месяц и день, они не изменятся, если выбранное значение больше не действует. Если они не действительны, они будут сброшены на 1.

HTML

<body> 
    <select name="month" id="month"></select> 
    <select name="day" id="day"></select> 
    <select name="year" id="year"></select> 
</body> 

JavaScript (ж/JQuery)

<script type ="text/javascript" src="http://code.jQuery.com/jquery-latest.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    var year = new Date().getFullYear(); 
    // load years 
    for (var i=2000; i<=year; i++) $("#year").append('<option value=' + i + '>' + i + '</option>'); 
    // load months 
    for (var i=1; i<=12; i++) $("#month").append('<option value=' + i + '>' + i + '</option>'); 
    // load days 
    for (var i=1; i<=31; i++) $("#day").append('<option value=' + i + '>' + i + '</option>'); 
}); 

$(function() { 
    $('#year').change(function() { 
    var now = new Date(); 
    if ($('#year').val()==now.getFullYear()) { 
     $('#month option').each(function() { 
     if ($(this).val()>(now.getMonth()+1)) $(this).remove(); 
     }); 
    } else { 
     for (var i=1; i<13; i++) 
     if ($("#month option[value='" + i + "']").val()==undefined) 
      $("#month").append('<option value=' + i + '>' + i + '</option>'); 
    } 

    checkMonth(); 
    }); 

    $('#month').change(checkMonth); 
}); 

function checkMonth() { 
    var now = new Date(); 
    if ($('#year').val()==now.getFullYear() && $('#month').val()==(now.getMonth()+1)) { 
    $('#day option').each(function() { 
     if ($(this).val()>now.getDate()) $(this).remove(); 
    }); 
    } else { 
    var days = 31; 
    var month = $('#month').val(); 
    if (month==2) { 
     if (($('#year').val() % 4) == 0) days = 29; // leap year 
     else days = 28; 
    } else if (month==2 || month==4 || month==6 || month==9 || month==11) { 
     days = 30; 
    } 
    for (var i=1; i<32; i++) 
     if (i>days) 
     $("#day option[value='" + i + "']").remove(); 
     else if ($("#day option[value='" + i + "']").val()==undefined) 
     $("#day").append('<option value=' + i + '>' + i + '</option>'); 
    } 
} 
</script> 
0

Это то, что вы хотите? попробовать с этим URL-адрес надеемся, что это поможет вам Demo ->

https://www3.ntu.edu.sg/home/ehchua/programming/webprogramming/jsdemo/JSDatePicker.html

Источник -> https://www3.ntu.edu.sg/home/ehchua/programming/webprogramming/JavaScript_Examples.html

+0

Этот пример даже не верен. он позволяет вам выбрать feb 30th в течение любого года и никогда не позволит вам выбрать 31-й за любой месяц – ShaneMit

Смежные вопросы