我有一个函数执行查询以根据使用.datepicker()选择的特定日期范围获取一些数据。我正在尝试将响应数据中的日期选择器设置回执行查询之前选择的日期范围。
queryDate = '2009-11-01';
$('#datePicker').datepicker('setDate', queryDate);
将datepicker设置为今天的日期有趣!如果它只是吐出一个错误,我不会感到困惑。为什么将它设置为今天的日期?
如何将日期格式化为'yyyy-mm-dd'并将日期选择器设置为它?
我认为最好将datepicker所链接的文本框设置为'queryDate'。
答案 0 :(得分:72)
当您尝试调用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 );
答案 1 :(得分:34)
您应该解析日期字符串,因为跨浏览器不支持使用带有Date
构造函数的ISO8601日期格式,(某些浏览器支持它,因为它将成为EcmaScript 5标准的一部分):< / p>
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。
答案 2 :(得分:10)
正如Scobal的帖子暗示的那样,datepicker正在寻找一个Date对象 - 而不仅仅是一个字符串!因此,要修改示例代码以执行您想要的操作:
var queryDate = new Date('2009/11/01'); // Dashes won't work
$('#datePicker').datepicker('setDate', queryDate);
答案 3 :(得分:7)
尝试将其更改为:
queryDate = '2009-11-01';
$('#datePicker').datepicker({defaultDate: new Date (queryDate)});
答案 4 :(得分:2)
function calenderEdit(dob) {
var date= $('#'+dob).val();
$("#dob").datepicker({
changeMonth: true,
changeYear: true, yearRange: '1950:+10'
}).datepicker("setDate", date);
}
答案 5 :(得分:1)
如果设置了minDate或maxDate选项,请检查您尝试将其设置的日期位于允许的日期范围内。