这是我第一次寻求帮助,因此很抱歉我的格式或细节级别不正确。 我希望datepicker日期更改与日期数组(highlight_dates)中的一组日期匹配的所有日期的背景颜色。我的代码适用于手动输入的数组,但不适用于以编程方式输入的日期。
我如何比较日期
要检查日期是否在数组中,请使用“ inArray”(以下代码中的L11):
1. $('#calendar').datepicker({
2. beforeShowDay: function(date){
3. var month = date.getMonth()+1;
4. var year = date.getFullYear();
5. var day = date.getDate();
6. // Change format of date
7. var newdate = day+"-"+month+'-'+year;
8. // Set tooltip text when mouse over date
9. var tooltip_text = "Results available for " + newdate;
10. // Check date in Array
11. if(jQuery.inArray(newdate,highlight_dates) != -1){
12. return [true,"highlight",tooltip_text ];
13. }
14. return [true];
15. }
16. });
(L12“突出显示”调用CSS格式) 当我使用手动创建(键入)的数组时,此方法可以正常工作: var highlight_dates = ['10 -9-2019','16-5-2019'等); 所有与数组中日期相对应的日期都会在datepicker中更改其背景颜色-但是,当我使用JSON以编程方式(从外部目录)获取日期时,日期选择器中的日期都不会更改颜色。
如何从外部目录获取日期
我使用以下代码从目录中获取日期(调用L4中的perl代码):
1. function getResults() {
2. $.ajax({
3. type: 'POST',4. url: 'getResultsFilenames5.pl',5. success: function(res) {
6. //alert("reached L37 and JSON data is : " + res.result);
7. //localStorage.setItem('dateArray',JSON.stringify(res.result));
8. localStorage.setItem('dateArray',res.result);
9. var resultDates = localStorage.getItem('dateArray')
10. //var resultDates = JSON.parse(localStorage.getItem('dateArray'));
11. },12. error: function() {alert("something didn't work!!");
13. }
14. });
15. }
将结果放置在localStorage(L8)中,以便可以在需要时检索它们。
我得到的结果
当我显示日期(L6)-res.result的输出时-它们看起来像这样:
23-05-2019,07-10-2019,20-06-2019,01-06-2019,30-05-2019,29-04-2019,25-04-2019,03-10-2019,16-05-2019,17-06-2019 (no square brackets or apostrophes).
但是,当在Perl代码中添加方括号和撇号(用于检索日期)时,当我使用“警报”(L 6)显示日期数组时,日期数组看起来与手动数组完全一样。认为问题与编程无关,而更可能是日期选择器格式与JSON返回的格式或使用localStorage返回的格式之间的格式不匹配。
我尝试使用'stringify'(L7)和'parse'(L10)更改日期格式,但没有任何效果。我也(绝望地)尝试将perl输出更改为标量(使用“ qq(@files”)),但是再次没有突出显示日期。
我不知道该怎么做才能解决问题,对于您能提供的任何建议,我将不胜感激。