2009-12-23 75 views
33

我有一个函数,执行一个查询来获取一些数据基于使用.datepicker()选择的某个日期范围。我试图将响应数据中的日期选择器设置回查询执行前选定的日期范围。.datepicker('setdate')问题,在jQuery

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

将datepicker设置为今天的日期有一个有趣的结果!如果它只是吐出一个错误,我不会感到困惑。它为什么将它设置为今天的日期?

我怎样才能取得像'yyyy-mm-dd'这样的日期并设置日期选择器?

我想这可能是最好的设置日期选择器链接到'queryDate'的文本框。

回答

31

你应该解析日期字符串,因为使用与Date构造的ISO8601日期格式不支持跨browserly的是,(一些浏览器支持因为这将是5的EcmaScript标准的一部分):

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

检查上面的例子here

+4

你错过了一点:'$('#datePicker')。datepicker('setDate',realDate);' – 2009-12-23 16:45:37

+1

Thanks !, fixed ... – CMS 2009-12-23 16:47:27

+3

不要用你自己解析日期。这是不好的方法。更好地使用datepicker parseDate函数。看看我的答案。 – jurka 2011-05-19 05:41:35

6

尝试将其更改为:

queryDate = '2009-11-01'; 
$('#datePicker').datepicker({defaultDate: new Date (queryDate)}); 
10

由于Scobal的帖子所暗示的,日期选择是寻找一个Date对象 - 不只是一个字符串!因此,修改您的示例代码做你想要什么:

var queryDate = new Date('2009/11/01'); // Dashes won't work 
$('#datePicker').datepicker('setDate', queryDate); 
+0

工作就像一个魅力。并且宁愿使用内置的Date对象,而不是根据CMS的解决方案 – 2011-06-09 00:00:31

+3

而使用一些DIY解析器。但是,当前文档状态:新日期可能是Date对象或当前日期格式的字符串。使用.datepicker({dateFormat:'yy-mm-dd'})创建日期选择器时设置格式;但这不起作用 - 这是一个错误,与文档或其他东西的错误? – 2011-07-07 21:23:07

1

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

69

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

queryDate = '2009-11-01'; 

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

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

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

$.datepicker.formatDate(format, date, settings); 
+12

+1比接受的答案好得多。太糟糕了,因此没有办法表明在被接受的答案之后出现了更好的答案(在这种情况下几年后)。 – Hollister 2011-06-28 20:19:12

+0

@Hollister,你可以给主持人标记一个问题,当然可以解释后面的答案更好。我认为主持人可以改变接受答案。 – 2014-09-16 15:57:07

2
function calenderEdit(dob) { 
    var date= $('#'+dob).val(); 
    $("#dob").datepicker({ 
     changeMonth: true, 
     changeYear: true, yearRange: '1950:+10' 
    }).datepicker("setDate", date); 
} 
+0

究竟是在寻找什么,ty先生 – 2018-03-07 14:20:56