Получить текущий месяц и дату с помощью 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)
, это более читаемо и меньше кода.