отфильтруйте выделенные даты с помощью ajax при обмене тегом select

#javascript #php #jquery #ajax #datepicker

#язык JavaScript #php #jquery #аякс #выбор даты

Вопрос:

Я использовал jQuery datepicker, чтобы выделить дату с value gt; 0 помощью . В нем показаны все даты, которые были value gt; 0 . Я хочу выделить только те даты, для которых элементы выбраны в теге select.

например, если я выберу пункт 1, то он выделит только те даты, в которых пункт 1 имеет значение больше 0.

Поэтому я попытался создать событие onchange в теге select и вызвать ajax для замены сценария. Но после некоторых поисков в Интернете я обнаружил, что после выполнения скрипта его невозможно заменить.

есть ли какой-либо способ получить только даты по выбранному элементу?

 HTML  lt;select id="item" name="item" onchange="date()"gt; lt;option value="All"gt;Alllt;/optiongt; lt;option value="item1"gt;item1lt;/optiongt; lt;option value="item2"gt;item2lt;/optiongt; lt;/selectgt;  lt;input type="text" id="start" name="start" autocomplete="off"gt;  
 lt;scriptgt;  $(function() {  // An array of dates  var eventDates = {};  lt;?php   $sql = "SELECT * from `ut_trips` WHERE `deisel` gt; 0";   $result = $connect-gt;query($sql);    while( $final=$result-gt;fetch_assoc() )   {   ?gt;  eventDates[new Date('lt;?php   $orgDate = date($final['date']);  $date = str_replace('-"', '/', $orgDate);   $newDate = date("Y/m/d", strtotime($date));   echo $newDate ?gt;')] = new Date(  'lt;?php $orgDate =date($final['date']);   $date = str_replace('-"', '/', $orgDate);   $newDate = date("Y/m/d", strtotime($date));   echo $newDate   ?gt;'  );   lt;?php    }   ?gt;   // datepicker  $('#start').datepicker({   dateFormat: "yy-mm-dd",   beforeShowDay: function(date) {  var highlight = eventDates[date];  if (highlight) {  return [true, "event", 'Tooltip text'];  } else {  return [true, '', ''];  }  }  });  }); lt;/scriptgt;  

файл ajax

 function item(str) {  if (str == '') {  document.getElementById('start').innerHTML = '';  return;  }  const xhttp = new XMLHttpRequest();  xhttp.onload = function () {  document.getElementById('start').innerHTML = this.responseText;  };  xhttp.open('GET', 'item.php?q='   str);  xhttp.send(); }  

item.js файл

 lt;?php  echo include('js.php');  ?gt;  

js.php файл

 lt;scriptgt; $(function() {  $q = $_GET['q']  // An array of dates  var eventDates = {};  lt;?php   $sql = "SELECT * from `ut_trips` WHERE `deisel` gt; 0 AND `vehicle` = '".$q."'";   $result = $connect-gt;query($sql);    while( $final=$result-gt;fetch_assoc() )   {   ?gt;  eventDates[new Date('lt;?php   $orgDate = date($final['date']);  $date = str_replace('-"', '/', $orgDate);   $newDate = date("Y/m/d", strtotime($date));   echo $newDate ?gt;')] = new Date(  'lt;?php $orgDate =date($final['date']);   $date = str_replace('-"', '/', $orgDate);   $newDate = date("Y/m/d", strtotime($date));   echo $newDate   ?gt;'  );   lt;?php    }   ?gt;   // datepicker  $('#start').datepicker({   dateFormat: "yy-mm-dd",   beforeShowDay: function(date) {  var highlight = eventDates[date];  if (highlight) {  return [true, "event", 'Tooltip text'];  } else {  return [true, '', ''];  }  }  }); }); lt;/scriptgt;  

Комментарии:

1. «Но после некоторых поисков в Интернете я обнаружил, что после выполнения сценария его невозможно заменить». — О чем именно вы здесь говорите? Если вы хотите использовать datepicker с различными опциями — затем повторно инициализируйте его, отв. используйте option , чтобы установить для определенного параметра новое значение.

2. @CBroe Извините, я не могу понять. Можете ли вы привести мне пример?