[英]Validate the date in html drop-down list
我有三個HTML下拉列表可以選擇年,月和日期。 如果所選年份等於當前年份,則第二和第三列表僅顯示月份和日期,直到當前日期為止。 我想用javascript編寫代碼。 我面臨的問題是,當用戶首先選擇日期或月份時,它將如何執行?
下面的例子。 如果首先選擇了月份和日期,除非選擇的值不再有效,否則它們不會更改。 如果無效,它們將重置為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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.