Javascript 在jquery datepicker上突出显示多个日期
如果我试图通过提供一个静态数组来突出显示jquery datepicker上的日期。它工作得非常好。如果我在循环中生成数组,然后提供它。我没有办法突出显示日期。代码如下Javascript 在jquery datepicker上突出显示多个日期,javascript,jquery,arrays,jquery-ui-datepicker,Javascript,Jquery,Arrays,Jquery Ui Datepicker,如果我试图通过提供一个静态数组来突出显示jquery datepicker上的日期。它工作得非常好。如果我在循环中生成数组,然后提供它。我没有办法突出显示日期。代码如下 // var tempDates=["2015/01/07","2015/01/14","2015/01/21"]; var tempDates = []; tempDates=datesToHighlight; line.datepicker({disab
// var tempDates=["2015/01/07","2015/01/14","2015/01/21"];
var tempDates = []; tempDates=datesToHighlight;
line.datepicker({disabled:false, defaultDate: dateObj, dateFormat: 'yy/mm/dd',
beforeShowDay: function (highlightMe) {
var dateString = jQuery.datepicker.formatDate('yy/mm/dd', highlightMe);
var highlightIndex = $.inArray(dateString.toString(), tempDates);
if(highlightIndex>-1) {
return [true, 'highlight', tips[highlightIndex]];
}
var aIndex = $.inArray(dateString, selected);
return [aIndex == -1]
}
});
这是循环生成日期的格式
2015/01/07
2015/01/14
2015/01/21
2015/01/28
2015/02/04
2015/02/11
2015/02/18
我用来生成数组的循环
for (var k = 0; k < selectedArrayLength; k++) {
if (new Date(selected[k]).getMonth() == monthIndex[ind%12]) {
var dateFormat = new Date(selected.splice(k, 1));
var curr_date = addZ(dateFormat.getDate());
var curr_month = dateFormat.getMonth();
curr_month++;
var curr_year = dateFormat.getFullYear();
var newFormat = (curr_year + "/" + addZ(curr_month) + "/" + curr_date);
thisMonthDates.push(newFormat);
//thisMonthDates.push(selected.splice(k, 1));
k--; // since we removed an element we need to decrement k
}
}
for(var eachDt=0; eachDt<thisMonthDates.length; eachDt++) {
console.log(thisMonthDates[eachDt]);
var datesToHighlight = new Array();
datesToHighlight.push(new Date(thisMonthDates[eachDt]));
}
尝试更新for循环以创建datesToHighlight。您不需要为每个thisMonthDates项目创建一个date对象,并且您每天都在重新创建一个新数组,因此我将您的date移动到循环外突出显示初始化
var datesToHighlight = [];
for(var eachDt=0; eachDt<thisMonthDates.length; eachDt++) {
console.log(thisMonthDates[eachDt]);
datesToHighlight.push(thisMonthDates[eachDt]);
}
datesToHighlight是另一个数组还是一个函数?确实不清楚具体问题是什么。演示可能有助于更好地解释problem@mikelt21它是一个数组。@mikelt21 datesToHighlight是在循环内生成的。然后我把它指的是tempDates。但它不起作用。我不知道:不确定datepicker是否支持多个日期高亮显示,因为它首先设置了defaultDate。我知道你的日历。。。没有成功。我认为将每个元素都用引号括起来可能会有所帮助。作为静态数组,我们提供的这段代码运行良好。它的每个元素都有引号。如何将每个元素用引号括起来?不,引号并没有帮助。这只意味着日期实际上是字符串,而不是日期对象。我正在尝试将datesToHighlight填充为字符串数组。您能在生成thisMonthDates数组后发布该数组的打印输出吗?另外,为什么在selected.splicek,1中使用splice?为什么不直接使用选定的[k]?那么你就不需要在循环结束时做k-了。这也可能导致问题。如果我不使用拼接,那么迭代将始终保持不变。因为我正在拼接包含所有选定日期的原始数组。
var datesToHighlight = [];
for(var eachDt=0; eachDt<thisMonthDates.length; eachDt++) {
console.log(thisMonthDates[eachDt]);
datesToHighlight.push(thisMonthDates[eachDt]);
}