Как получить даты для beforeShowDay в Jquery -ui datepicker - PullRequest
0 голосов
/ 16 июня 2020

Мне нужно отключить некоторые даты в 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();

Когда я пытаюсь использовать эту возвращенную строку, ни одна из недоступных дат не отображается . Строка фактически обнаруживается недоступной функцией, но игнорирует ее (ошибки не отображаются). Очевидно, что проблема с возвращенной строкой, но я не вижу, что это такое.

Любые указатели на проблему очень ценятся

1 Ответ

0 голосов
/ 16 июня 2020

Рассмотрим следующее 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 Script:

$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();
...