0

jquery datepicker 插件有效,但我想让 onSelect 触发一个在新选项卡中打开页面的函数。

jquery datepicker 插件有效,但我想让 onSelect 触发一个在新选项卡中打开页面的函数。

$("#dp").datepicker({
beforeShowDay: highlightDays,

//works perfectly fine

onSelect: function(dates) { window.open('/en/calendar/' + dates, '_self'); },
});

var dates = [new Date(2011, 4 - 1, 28), new Date(2011, 5 - 1, 10),];

//does not work

onSelect: function(links) { window.open('/en/trip/' + links, '_self'); },

var links = [new Link('link1'), new Link('link2'),];

js:

$( "#toggleDP" ).click(function() { $("#dp ").datepicker('show'); });

$("#dp").datepicker({
changeMonth: true,
changeYear: true,
showOn: 'button',
showButtonPanel: true,
buttonImageOnly: true,
buttonImage: "0.gif",
dateFormat: 'yy-mm-dd',
beforeShowDay: highlightDays,
onSelect: function(dates) { window.open('/en/calendar/' + dates, '_self'); },
});


var links =[new Link('test'), new Link('test1'), ];
var dates = [new Date(2011, 4 - 1, 28), new Date(2011, 5 - 1, 10), ];
var txt = ['test','test1',];

function highlightDays(date) {
for (var i = 0; i < dates.length; i++) {
if (dates[i]-date==0) {
return [true, 'markedDay', txt[i],];
}
}
return [false, ''];
}

如果我将 onSelect 设置为 function(links) { window.open('/en/trips/' + links, '_self'); },然后由于某些未知原因,它打开了一个带有相应 DATE 的 URL,而不是相应的链接。

4

1 回答 1

0

这是 onSelect 处理程序语法:

function(dateText, inst)

以及来自文档的解释:

该函数接收选定的日期作为文本和 datepicker 实例作为参数。

所以当你说:

   onSelect: function(links) { window.open('/en/trips/' + links, '_self'); }

因此,作为参数传递的链接实际上并不是您认为的数组,而是在处理程序内部更改了上下文。即链接指的是上面提到的选定日期。

于 2011-05-11T18:29:06.893 回答