我有两个持有数月和数年的下拉列表......
$(document).ready(function () {
$('#Months option:eq(' + (new Date).getMonth() + ')').prop('selected', true);
alert((new Date).getMonth());
$('#Years option:eq(' + (new Date).getFullYear() + ')').prop('selected', true);
alert((new Date).getFullYear());
});
我上面编写了JQuery脚本,这样当我的程序运行时,下拉列表中的选定值必须是当前月份和年份。
但是当我执行程序时.. 警报给出7和2012 ..但在我看来当前月份被选中但当前年份不是为什么?如何让我的下拉列表选择当前年份?
答案 0 :(得分:22)
<强>的jQuery 强>
var d = new Date(),
n = d.getMonth(),
y = d.getFullYear();
$('#months option:eq('+n+')').prop('selected', true);
$('#years option[value="'+y+'"]').prop('selected', true);
<强> HTML 强>
<select id="months">
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
<select id="years">
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
</select>
<强> DEMO 强>
答案 1 :(得分:2)
从0(1月)到11(12月)的整数返回月份:请参阅http://www.java2s.com/Tutorial/JavaScript/0240__Date/DategetMonth.htm
因此当前月份(8月)将返回7.为了能够与通常的月份索引(意味着1到12)匹配,请使用 ((new Date()).getMonth() + 1)
。
正如评论中指出的那样,我误解了这个问题。月份是正确的,因为几个月的基于零的数组和jquery选择器:eq()
也是从零开始的。
然而,正如其他答案中所指出的,返回的年份与匹配jquery选择器中第n个元素的:eq()
不匹配。使用建议option[value=' + (new Date).getFullYear() + ')'
会更好。
答案 2 :(得分:1)
jQuery中选择器的:eq(N)
部分选择匹配集中的第N个元素(包括第0个)(此时将为#Years option
)。因此,除非您在Years
下拉列表中有更多2012选项,否则这将无效。
最好根据它的值选择选项:option[value=2012]
或
just use $("#Years").val(2012)
,它更具可读性且代码更少。