Проблемы .datepicker ('setdate') в jQuery - PullRequest
35 голосов
/ 23 декабря 2009

У меня есть функция, которая выполняет запрос для получения некоторых данных на основе определенного диапазона дат, который выбирается с помощью .datepicker (). Я пытаюсь установить указатель даты в данных ответа на диапазон дат, который был выбран до выполнения запроса.

queryDate = '2009-11-01';
$('#datePicker').datepicker('setDate', queryDate);

имеет интересный результат установки указателя даты на сегодняшнюю дату! Я не был бы так смущен, если бы просто выплюнул ошибку. Почему он устанавливает сегодняшнюю дату?

Как я могу взять форматированную дату, например, 'yyyy-mm-dd' и установить для нее указатель даты?

Я думаю, что лучше всего установить текстовое поле, с которым указатель даты связан с 'queryDate'.

Ответы [ 6 ]

72 голосов
/ 19 мая 2011

Когда вы пытаетесь вызвать setDate, вы должны предоставить действительный объект Date для JavaScript.

queryDate = '2009-11-01';

var parsedDate = $.datepicker.parseDate('yy-mm-dd', queryDate);

$('#datePicker').datepicker('setDate', parsedDate);

Это позволит вам использовать разные форматы для даты запроса и представления строковой даты в DatePicker. Такой подход очень полезен при создании многоязычного сайта. Еще одна полезная функция - formatDate, которая форматирует объект даты javascript в строку.

$.datepicker.formatDate( format, date, settings );
34 голосов
/ 23 декабря 2009

Вы должны проанализировать строку даты, так как использование формата даты ISO8601 с конструктором Date пока не поддерживается кросс-браузерно (некоторые браузеры поддерживают его, поскольку оно будет частью стандарта EcmaScript 5):

var queryDate = '2009-11-01',
    dateParts = queryDate.match(/(\d+)/g)
    realDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2]);  
                                    // months are 0-based!

$('#datePicker').datepicker({ dateFormat: 'yy-mm-dd' }); // format to show
$('#datePicker').datepicker('setDate', realDate);

Проверьте приведенный выше пример здесь .

10 голосов
/ 23 декабря 2009

Как следует из сообщения Скобала, средство выбора даты ищет объект Date, а не просто строку! Итак, чтобы изменить ваш пример кода, чтобы сделать то, что вы хотите:

var queryDate = new Date('2009/11/01'); // Dashes won't work
$('#datePicker').datepicker('setDate', queryDate);
7 голосов
/ 23 декабря 2009

Попробуйте изменить его на:

queryDate = '2009-11-01';
$('#datePicker').datepicker({defaultDate: new Date (queryDate)});
2 голосов
/ 20 сентября 2011
function calenderEdit(dob) {
    var date= $('#'+dob).val();
    $("#dob").datepicker({
        changeMonth: true,
        changeYear: true, yearRange: '1950:+10'
    }).datepicker("setDate", date);
}
1 голос
/ 16 сентября 2010

Убедитесь, что дата, которую вы пытаетесь установить, лежит в допустимом диапазоне дат, если заданы параметры minDate или maxDate.

...