如何获取从外部文件检索的日期以匹配jq datepicker中的日期?

这是我第一次寻求帮助,因此很抱歉我的格式或细节级别不正确。 我希望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”)),但是再次没有突出显示日期。

我不知道该怎么做才能解决问题,对于您能提供的任何建议,我将不胜感激。

redroom88 回答:如何获取从外部文件检索的日期以匹配jq datepicker中的日期?

您应该将数据转换为有效的数组,然后将其设置为resultDates,然后将数据存储到存储器中。

success: function(res) {
    var resultDates = getDataAsArray(res);
    localStorage.setItem('dateArray',resultDates);
},

和一个小的辅助函数:

function getDataAsArray(data) {
    return data.split(",");
}
本文链接:https://www.f2er.com/2782561.html

大家都在问