36

我有一个函数可以执行查询,以根据使用 .datepicker() 选择的某个日期范围获取一些数据。我正在尝试将响应数据中的日期选择器设置回执行查询之前选择的日期范围。

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

有趣的结果是将日期选择器设置为今天的日期!如果它只是吐出一个错误,我就不会那么困惑了。为什么将它设置为今天的日期?

如何获取格式为“yyyy-mm-dd”的日期并将日期选择器设置为它?

我认为最好将日期选择器链接到的文本框设置为“queryDate”。

4

6 回答 6

73

当您尝试调用 setDate 时,您必须提供有效的 JavaScript Date 对象。

queryDate = '2009-11-01';

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

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

这将允许您在 datepicker 中为查询日期和字符串日期表示使用不同的格式。当您创建多语言站点时,这种方法非常有用。另一个有用的函数是 formatDate,它将 javascript 日期对象格式化为字符串。

$.datepicker.formatDate( format, date, settings );
于 2011-05-19T05:38:16.357 回答
36

如果您想支持非常旧的浏览器,您应该解析日期字符串,因为在DateIE9 之前不支持在构造函数中使用 ISO8601 日期格式:

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);

在这里查看上面的例子。

于 2009-12-23T16:43:50.630 回答
11

正如 Scobal 的帖子所暗示的,日期选择器正在寻找一个 Date 对象——而不仅仅是一个字符串!因此,要修改您的示例代码以执行您想要的操作:

var queryDate = new Date('2009/11/01'); // Dashes won't work
$('#datePicker').datepicker('setDate', queryDate);
于 2009-12-23T16:41:18.050 回答
7

尝试将其更改为:

queryDate = '2009-11-01';
$('#datePicker').datepicker({defaultDate: new Date (queryDate)});
于 2009-12-23T16:36:48.803 回答
2
function calenderEdit(dob) {
    var date= $('#'+dob).val();
    $("#dob").datepicker({
        changeMonth: true,
        changeYear: true, yearRange: '1950:+10'
    }).datepicker("setDate", date);
}
于 2011-09-20T12:17:54.667 回答
1

如果设置了 minDate 或 maxDate 选项,请检查您尝试将其设置为的日期是否在允许的日期范围内。

于 2010-09-16T12:49:10.547 回答