#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 Извините, я не могу понять. Можете ли вы привести мне пример?