.datepicker('setdate')在jQuery中发布

Der*_*air 36 jquery jquery-ui jquery-ui-datepicker

我有一个函数执行查询,以获取基于使用.datepicker()选择的特定日期范围的一些数据.我试图将响应数据中的日期选择器设置回执行查询之前选择的日期范围.

queryDate = '2009-11-01';
$('#datePicker').datepicker('setDate', queryDate);
Run Code Online (Sandbox Code Playgroud)

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

如何将形成的日期定义为'yyyy-mm-dd'并将日期选择器设置为它?

我认为最好只将datepicker链接到的文本框设置为'queryDate'.

jur*_*rka 73

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

queryDate = '2009-11-01';

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

$('#datePicker').datepicker('setDate', parsedDate);
Run Code Online (Sandbox Code Playgroud)

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

$.datepicker.formatDate( format, date, settings );
Run Code Online (Sandbox Code Playgroud)

  • +1比接受的答案要好得多.太糟糕的SO没有办法表明在接受的答案之后有更好的答案(在这种情况下是几年之后). (14认同)

CMS*_*CMS 35

您应该解析日期字符串,因为Date跨浏览器不支持使用带有构造函数的ISO8601日期格式(某些浏览器支持它,因为它将成为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!
// For >= IE9
var realDate = new Date('2009-11-01');  

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

这里查看上面的例子.

  • 你错过了一点:`$('#datePicker').datepicker('setDate',realDate);` (4认同)
  • 不要自己解析日期.这是不好的方法.最好使用datepicker parseDate函数.看看我的回答. (4认同)

Mat*_*all 10

正如Scobal的帖子暗示的那样,datepicker正在寻找一个Date对象 - 而不仅仅是一个字符串!因此,要修改示例代码以执行您想要的操作:

var queryDate = new Date('2009/11/01'); // Dashes won't work
$('#datePicker').datepicker('setDate', queryDate);
Run Code Online (Sandbox Code Playgroud)

  • 但是,当前文档状态:新日期可以是Date对象或当前日期格式的字符串.使用.datepicker创建日期选择器时设置格式({dateFormat:'yy-mm-dd'}); 然而这不起作用 - 这是一个错误,文档错误或其他什么? (3认同)

Mar*_*ope 7

尝试将其更改为:

queryDate = '2009-11-01';
$('#datePicker').datepicker({defaultDate: new Date (queryDate)});
Run Code Online (Sandbox Code Playgroud)