如何在Jquery-ui datepicker中检索beforeShowDay的日期

问题描述 投票:0回答:1

我需要在jquery-ui中禁用一些日期

以下代码可以正常工作:

var unavailableDates =["19-6-2020","21-6-2020","29-6-2020"];
  var dateToday = new Date(); 
  var dateToday=
    $(function() {
    $( "#date_picker" ).datepicker({
    dateFormat: 'dd-mm-yy',
    minDate: dateToday,
    onSelect: function(dateText) {
    alert("Selected date: " + dateText);
    },
    beforeShowDay:unavailable
    });
  });

  function unavailable(date) {
    //alert ("Function"+unavailableDates);
      dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear();
      if ($.inArray(dmy, unavailableDates) == -1) {
          return [true, ""];
      } else {
          return [false, "", "Unavailable"];
      }
  }

但是我需要从mysql数据库中检索不可用的日期。这是ajax返回:

["19-6-2020","21-6-2020","29-6-2020"]

该字符串由php创建:

$temp="[";
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
      $ date=date("j-n-Y", strtotime($row["date_unavailable"]));
      $ temp=$temp.'"'.$date.'",';
    }//end while
$temp = rtrim($temp, ",");
$temp=$temp."]";
echo $temp;
exit();

当我尝试使用此返回的字符串时,不会显示所有不可用的日期。该字符串实际上是由不可用的功能检测到的,但是会忽略它(不显示错误)返回的字符串显然存在问题,但我看不到它是什么。

任何指向问题的指针,我们都会感激

ajax jquery-ui
1个回答
0
投票

考虑以下JavaScript:

$(function() {
  function getUnDates() {
    var results;
    $.getJSON("getDates.php", function(data) {
      results = data;
    });
    return results;
  }

  function unavailable(date) {
    var dmy = $.datepicker.formatDate("dd-mm-yy", date);
    var result = [false, "", "Unavailable"];
    if ($.inArray(dmy, unavailableDates) == -1) {
      result = [true, ""];
    }
    return result;
  }

  var unavailableDates = getUnDates();
  var dateToday = new Date();

  $("#date_picker").datepicker({
    dateFormat: 'dd-mm-yy',
    minDate: dateToday,
    onSelect: function(dateText) {
      alert("Selected date: " + dateText);
    },
    beforeShowDay: unavailable
  });
});

然后在独立的PHP脚本中使用它:

$results = array();
  while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $date = date("j-n-Y", strtotime($row["date_unavailable"]));
    array_push($result, $date);
  }
header('Content-Type: application/json');
echo json_encode($result);
exit();
© www.soinside.com 2019 - 2024. All rights reserved.