2012-08-26 111 views
11

我有两个下拉列表持有几个月和几年...获取当前的月份和日期使用jquery

$(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 ..但在我看来当前的月份被选中,但当年不是为什么?以及如何让我的下拉列表选择当年?

+1

提供一些更多的代码,并张贴在jsfiddle.net演示 –

回答

17

的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

+0

非常感谢您工作.. –

2

个月从0(一月)到11(十二月)返回一个整数:看 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() + ')'会更好。

+0

OP有问题本年度:“在我看来,当前月被选择,但目前一年不为什么?” – nemesv

+0

我不是故意在我的下拉列表中显示八月,但我想在我的第二个下拉列表中显示2012 ...因为它显示的最小值,即2007 .. –

+0

@nemesv:我想问同样的题?? –

1

jQuery中的选择器的:eq(N)部选择在第N个元素(包括0)级匹配小号et(在那一点上将是#Years option)。因此,除非在Years下拉菜单中有更多2012年选项,否则这种方式无效。

这是更好地选择基于它的选项的值:option[value=2012]

just use $("#Years").val(2012),这是更具可读性和更少的代码。

+0

但我的警报消息显示2012 .. –

+0

@ sna2stha:而且?您的提醒只显示当前年份,而不显示选定的选项。 – lqc

相关问题