Получить текущий месяц и дату с помощью 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 script, как указано выше, так что, когда моя программа запускает выпадающее меню, выбранное значение должно быть текущим месяцем и годом.

но когда я запускаю программу. предупреждение дает 7 и 2012. но, на мой взгляд, текущий месяц выбран, но текущий год не является причиной? и как я могу сделать свой выпадающий список для выбора текущего года?

Ответ 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

Ответ 2

Месяцы возвращаются как целое число от 0 (январь) до 11 (декабрь): см. http://www.java2s.com/Tutorial/JavaScript/0240__Date/DategetMonth.htm

Итак, текущий месяц (август) вернется 7. Чтобы иметь возможность сопоставляться с обычным индексом месяца (значение от 1 до 12), используйте ((new Date()).getMonth() + 1).

Как указано в комментариях, я неправильно понял проблему. Месяц правилен из-за массива с нулевым значением в течение нескольких месяцев, а селектор jQuery :eq() также имеет нулевое значение.

Однако, как указано в других ответах, возвращенный год не будет соответствовать :eq(), который соответствует n-му элементу в селекторе jquery. Использование, как предложено option[value=' + (new Date).getFullYear() + ')', было бы лучше.

Ответ 3

Часть :eq(N) селектора в jQuery выбирает N-й элемент (включая 0-й) в согласованном наборе (который в этой точке был бы #Years option). Поэтому, если в раскрывающемся списке Years у вас больше вариантов 2012 года, это не сработает.

Лучше выбрать опцию на основе ее значения: option[value=2012] или

просто используйте $("#Years").val(2012), это более читаемо и меньше кода.