我尝试使用基于我正在运行的事件的当前日期的选项来填充HTML选择字段(#contestdate)。我使用JavaScript进行主要计算,将jQuery添加到选择字段。
日期范围应该是中间的当前日期(下面突出显示为红色),在当前日期的任一侧选择7天(我需要将前一天和将来的日期作为选择)。
我已经让代码工作以显示日期,但是,日子会进入底片。这些日子也超过了月底的日期,尽管没有显示。以下代码应显示为2015年10月30日和2015年10月31日作为前两个选项(在所有日期'之后):
我需要的是自动计算每月的天数,并相应地修改日期。我将在2015年底之前举办活动,所以我也需要多年的计算。
如果没有每个月的变量和每个月的相应条件,我无法想办法做到这一点。
我的代码如下:
// Add the available days to the dropdown for date selection (American format)
$(document).ready(function() {
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; // January is 0
var yyyy = today.getFullYear();
// Days 9 and under
if (dd < 10) {
dd = '0' + dd;
}
// Months 9 and under
if (mm < 10) {
mm = '0' + mm;
}
// Previous dates (Needs calculation for change in month / year)
dd = dd - 8;
for (i = 1; i < 8; i++) {
dd = dd + 1;
theDate = mm + '/' + dd + '/' + yyyy;
$('#contestdate').append($('<option />').val(i).html(theDate));
}
// Current date
dd = dd + 1;
theDate = mm + '/' + dd + '/' + yyyy;
$('#contestdate').append($('<option />').val('8').html(theDate.fontcolor("red")));
// Future dates (Needs calculation for change in month / year)
for (i = 9; i < 16; i++) {
dd = dd + 1;
theDate = mm + '/' + dd + '/' + yyyy;
$('#contestdate').append($('<option />').val(i).html(theDate));
}
});
请注意,我需要美国日期格式的日期(mm / dd / yyyy),这可能会改变解决方案。
如果有人能让我知道(或指出我正确的方向)一种无痛地做到这一点的方法,那将非常感激:)
答案 0 :(得分:1)
我创建了一支笔:http://codepen.io/anon/pen/OyoWXK
操纵Date
对象以获取过去和将来的日期。
对于选项value
,我只使用了Date
对象,您可以将其更改为符合您需要的任何内容。
希望这会对你有所帮助。