【问题标题】:Get current month and date using jquery使用 jquery 获取当前月份和日期
【发布时间】:2012-08-26 09:48:25
【问题描述】:

我有两个包含月份和年份的下拉列表...

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

【问题讨论】:

  • 提供更多代码并在 jsfiddle.net 上发布演示

标签: javascript jquery razor


【解决方案1】:

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

【讨论】:

  • 小细节,getMonth() 返回的值是0到11,而不是1到12
【解决方案2】:

月份以整数形式返回,从 0(一月)到 11(十二月):参见 http://www.java2s.com/Tutorial/JavaScript/0240__Date/DategetMonth.htm

所以当前月份(8 月)将返回 7。为了能够匹配通常的月份索引(即 1 到 12),请使用 ((new Date()).getMonth() + 1)

正如 cmets 中所指出的,我误解了这个问题。月份是正确的,因为月份的数组从零开始,并且 jquery 选择器 :eq() 也是从零开始的。

但是,正如其他答案中所指出的,返回的年份与 :eq() 不匹配,后者与 jquery 选择器中的第 n 个元素匹配。按照建议使用option[value=' + (new Date).getFullYear() + ')' 会更好。

【讨论】:

  • OP 在当年有问题:“在我看来,选择了当前月份,但为什么没有选择当前年份??”
  • 我并不是说在我的下拉列表中显示的是 8 月,但我想在我的第二个下拉列表中显示 2012 年...因为它显示的是最小值,即 2007 年..
  • @nemesv:我也想问同样的问题??
  • :eq 也是从 0 开始的,因此 OPs 代码实际上是正确的,并选择第 8 个月作为值 getMonth() == 7。
【解决方案3】:

jQuery 中选择器的:eq(N) 部分选择匹配集合中的第N 个元素(包括第0 个)(此时将是#Years option)。因此,除非您在 Years 下拉列表中有超过 2012 年的选项,否则这是行不通的。

最好根据它的值来选择选项:option[value=2012] or

just use $("#Years").val(2012),可读性更高,代码更少。

【讨论】:

  • @sna2stha:然后呢?您的警报只显示当前年份,而不是选择了哪个选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
相关资源
最近更新 更多