Извлечь месяц из JQuery DatePicker - PullRequest
0 голосов
/ 18 июля 2011

У меня есть jquery datepicker, который форматирует дату в дд / мм / гггг. Мне нужно отобразить название месяца, когда кто-то набирает дату, дата выбирается и загружается. я изо всех сил пытаюсь получить месяц. myDate - это текстовое поле, прикрепленное к средству выбора даты. у меня есть это:

var date = new Date($("#myDate").val());
alert(date.getDate());
alert(date.getMonth());
alert(date.getDay());
alert(date.getYear());

Когда я запускаю его с датой 18/07/2011, я получаю 5 за месяц, 4 за день, 7 за дату и 112 за год, что очень странно. Что я делаю неправильно? все, что мне нужно сделать, это динамически изменить метку месяца на месяц, выбранный / введенный с помощью указателя даты, т.е. июль ...

Ответы [ 2 ]

3 голосов
/ 18 июля 2011

Чтобы получить дату от DatePicker, вы должны использовать $("#myDate").datepicker("getDate"). Хотя то, что вы сейчас делаете, создает объект JavaScript Date, который, вероятно, неправильно интерпретирует .val ().

1 голос
/ 18 июля 2011

Использование

$('#myDate').datepicker('getDate')

Получит более надежный объект JavaScript с датой.Кроме того, getMonth () вернет месяц с нулевым индексом, поэтому июль будет возвращен как «6».Чтобы вернуть полный год, вы должны использовать: .getFullYear ()

Скорее всего, javascript "new Date ()" не проанализировал его в правильном формате даты.Если вы правильно установили форму даты в DatePicker, то виджет будет работать за вас, когда вы используете его метод 'getDate'.

Следовательно, ваш код станет:

var date = $("#myDate").datepicker('getDate');
alert(date.getDate());         // Day of the month
alert(date.getMonth());        // Month with a zero index
alert(date.getDay());          // Day of the week
alert(date.getFullYear());     // The "full" year, e.g. 2011

// Обновление с решением для списка выбора

Выбор правильного значения из раскрывающегося списка во многом будет зависеть от того, как настроены ваши значения.т.е. если значения:

<select id="MySelect">
  <option value="1">Jan</option>
</select>

Тогда вы можете просто сделать:

$('#MySelect').val((date.getMonth() + 1));

Это выберет указанный месяц.Однако, если ваше значение представляет собой некоторую вариацию названия месяца, например:

<select id="MySelect">
  <option value="Jan">Jan</option>
</select>

Тогда вам понадобится функция для сопоставления номера месяца с его именем, что-то вроде:

var months = ['Jan', 'Feb', 'Mar', ...etc }

function getMonthShortName(month) {
    return months[month];
}

$('#MySelect').val(getMonthShortName(date.getMonth()));
...