У меня возникла проблема, связанная с работой ряда подключенных элементов выбора. В принципе, я хочу, чтобы иметь возможность выбрать номер рейса в первом выпадающем списке, затем он заполняет второй действительными пунктами назначения, а третий – действительными номерами рейсов.
Кажется, что одна из них сбрасывается, чтобы заполнить следующую, она работает нормально, проблема заключается в том, что, поскольку мне нужно изменить первую каплю, чтобы также заполнить третью, она просто не работает надежно. Иногда это работает, иногда это не так, и я не уверен, почему.
Код javascript:
$(function(){ $("select#fromICO").change(function(){ $.getJSON("/trip_reports_chain.php",{from: $('#fromICO').val(), t: 'd'}, function(j){ var options = ''; for (var i = 0; i < j.length; i++) { options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>'; } $("select#toICO").html(options); }); $.getJSON("/trip_reports_chain.php",{to: $('#toICO').val(), t: 'f', from: $('#fromICO').val()}, function(j){ var options = ''; for (var i = 0; i < j.length; i++) { options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>'; } $("select#flightNo").html(options); }); }) $("select#toICO").change(function(){ $.getJSON("/trip_reports_chain.php",{to: $(this).val(), t: 'f', from: $('#fromICO').val()}, function(j){ var options = ''; for (var i = 0; i < j.length; i++) { options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>'; } $("select#flightNo").html(options); }) }) })
И HTML / PHP:
<select name="origin" id="fromICO"> <option value="">Origin</option> <?php $sql = "SELECT origin FROM data_flights GROUP BY origin ORDER BY origin ASC"; $mysql_result = mysql_query($sql, $mysql_link); if ((!mysql_error()) && (mysql_num_rows($mysql_result) > 0)) { while ($row = mysql_fetch_array($mysql_result)) { echo "<option value='".$row['originICO']."'>".$row['originICO']."</option>"; } } ?> </select> <select name="destination" id="toICO"> <option value="">Destination</option> </select> <select name="flightno" id="flightNo"> <option value="">Flight Number</option> </select>
Код в trip_reports_chain.php надежно возвращает правильные результаты JSON, поэтому я тоже вижу небольшую отправку сообщений.
Итак, симптомы таковы: если я выберет источник происхождения, он заполнит пункт назначения, но не номер рейса. Если я выбираю пункт назначения (который должен быть одним с более чем одним возможным пунктом назначения, поскольку в поле выбора нет события «изменения»), он заполняет номера рейсов. Если я затем вернусь и измените происхождение, он иногда меняет номер места назначения и полета. Там может быть образец, но я не могу это заметить.