.datepicker('setdate'), в jQuery
У меня есть функция, которая выполняет запрос для получения некоторых данных на основе определенного диапазона дат, который выбирается с помощью .datepicker(). Я пытаюсь установить datepicker, которые находятся в данных ответа, обратно в диапазон дат, который был выбран до выполнения запроса.
queryDate = '2009-11-01';
$('#datePicker').datepicker('setDate', queryDate);
имеет интересный результат установки datepicker на сегодняшний день! Я бы не был так смущен, если бы просто выплюнул ошибку. Почему он установлен на сегодняшний день?
Как я могу взять дату, которая сформирована как "yyyy-mm-dd", и установить для нее датупипетку?
Я думаю, что лучше всего просто установить текстовое поле, с которым привязывается datepicker к 'queryDate'.
Ответы
Ответ 1
Если вы хотите поддерживать действительно старые браузеры, вам следует проанализировать строку даты, поскольку использование формата даты ISO8601 с конструктором Date
не поддерживается до IE9:
var queryDate = '2009-11-01',
dateParts = queryDate.match(/(\d+)/g)
realDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2]);
// months are 0-based!
// For >= IE9
var realDate = new Date('2009-11-01');
$('#datePicker').datepicker({ dateFormat: 'yy-mm-dd' }); // format to show
$('#datePicker').datepicker('setDate', realDate);
Проверьте приведенный выше пример здесь.
Ответ 2
При попытке вызвать 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 );
Ответ 3
Как следует из сообщения Scobal, datepicker ищет объект Date, а не только строку! Итак, чтобы изменить код примера, чтобы сделать то, что вы хотите:
var queryDate = new Date('2009/11/01'); // Dashes won't work
$('#datePicker').datepicker('setDate', queryDate);
Ответ 4
Попробуйте изменить его на:
queryDate = '2009-11-01';
$('#datePicker').datepicker({defaultDate: new Date (queryDate)});
Ответ 5
function calenderEdit(dob) {
var date= $('#'+dob).val();
$("#dob").datepicker({
changeMonth: true,
changeYear: true, yearRange: '1950:+10'
}).datepicker("setDate", date);
}
Ответ 6
Убедитесь, что дата, которую вы пытаетесь установить, находится в пределах допустимого диапазона дат, если установлены параметры minDate или maxDate.