下面我有一段代碼,它假設顯示2個下拉菜單,一個用於建築和其他房間。當用戶從建築物下拉菜單中選擇建築物時,使用ajax/jquery它將導航到room.php
頁面,並列出屬於所選建築物的房間並顯示房間列表中的房間下拉菜單。這工作得很好:在下拉菜單中不顯示選定的選項
<script type="text/javascript">
function getRooms() {
var building = jQuery("#buildingsDrop").val();
jQuery('#roomsDrop').empty();
jQuery('#roomsDrop').html('<option value="">Please Select</option>');
jQuery.ajax({
type: "post",
url: "room.php",
data: { building:building },
success: function(response){
jQuery('#roomsDrop').append(response);
}
});
}
</script>
...
<?php
$sql = "SELECT DISTINCT Building FROM Room";
$sqlstmt=$mysqli->prepare($sql);
$sqlstmt->execute();
$sqlstmt->bind_result($dbBuilding);
$buildings = array(); // easier if you don't use generic names for data
$buildingHTML = "";
$buildingHTML .= '<select name="buildings" id="buildingsDrop" onchange="getRooms();">'.PHP_EOL;
$buildingHTML .= '<option value="">Please Select</option>'.PHP_EOL;
while($sqlstmt->fetch())
{
$building = $dbBuilding;
$buildingHTML .= "<option value='".$building."'>" . $building . "</option>".PHP_EOL;
}
$buildingHTML .= '</select>';
$roomHTML = "";
$roomHTML .= '<select name="rooms" id="roomsDrop">'.PHP_EOL;
$roomHTML .= '<option value="">Please Select</option>'.PHP_EOL;
$roomHTML .= '</select>';
?>
room.php:
$building = isset($_POST['building']) ? $_POST['building'] : '';
$sql = "SELECT Room FROM Room WHERE Building = ?";
$sqlstmt=$mysqli->prepare($sql);
$sqlstmt->bind_param("s",$building);
$sqlstmt->execute();
$sqlstmt->bind_result($dbRoom);
$roomHTML = "";
while($sqlstmt->fetch()) {
$roomHTML .= "<option value='".$dbRoom."'>" . $dbRoom . "</option>".PHP_EOL;
}
echo $roomHTML;
我有但問題是,當用戶選擇的評估,這是假設顯示在評估的建築和房間選擇相關的下拉菜單。但它不會選擇這些選項,而是保留在「請選擇」選項中。爲什麼是這個,我怎樣才能得到顯示的選項?
下面是視圖源代碼:
//Assessment drop down menu:
<p><strong>Assessments:</strong> <select name="session" id="sessionsDrop">
<option value="">Please Select</option>
<option value='71' style='color: green'>AKXMB - 30-11-2012 - 10:00</option>
</select> </p>
</form>
//Building drop down menu:
<select name="buildings" id="buildingsDrop" onchange="getRooms();">
<option value="">Please Select</option>
<option value='Canalside East'>Canalside East</option>
<option value='Canalside West'>Canalside West</option>
</select>
//Room drop down menu (list of rooms displayed in room.php):
<select name="rooms" id="roomsDrop">
<option value="">Please Select</option>
</select>
//Retrieve assessment information
//(Below is where problem lies where it is not selecting building and room options in drop down menu)
<script type="text/javascript">
$(document).ready(function(){
var sessioninfo = [{"SessionId":71,"Building":"Canalside East","Room":"CE01\/04"},{"SessionId":84,"Building":"Canalside East","Room":"CE01\/04"}];
$('#sessionsDrop').change(function(){
var sessionId = $(this).val();
if (sessionId !== '') {
for (var i = 0, l = sessioninfo.length; i < l; i++)
{
if (sessioninfo[i].SessionId == sessionId) {
var currentbuilding = $('#currentBuilding').val(sessioninfo[i].Building);
var editbuilding = $('#BuildingsDrop').val(sessioninfo[i].Building);
var currentroom = $('#currentRoom').val(sessioninfo[i].Room);
var editroom = $('#RoomsDrop').val(sessioninfo[i].Room);
var currentid = $('#currentId').val(sessioninfo[i].SessionId);
var editid = $('#newId').val(sessioninfo[i].SessionId);
break;
}
}
}
});
});
</script>
UPDATE:
在應用程序中選擇從下拉菜單,並提交一個 「模塊」。
下面應該顯示一些功能。在評估下拉菜單 中選擇任何評估。
您可以在下方看到「當前評估詳情」它 顯示在只讀的文本輸入 大樓和客房指出哪些是評估目前的建築和房間。
我想要在「新評估室」部分的下拉菜單 中選擇相同的建築物和房間。您可以在建築物下拉菜單中看到 建築物被選中,但未在房間下拉菜單中選擇的房間爲 。
對不起sean,這是一個複製和粘貼錯誤所以,我在我的應用程序中有標籤 – user1914374
我已經更新了我的答案。顯然你有'id'用於'buildingsDrop'&'Drop'與錯誤的情況下('BuildingsDrop' /'RoomsDrop') – Sean
我是一個愚蠢的錯過。好的,所以發生了什麼事是正在選擇建築物,但房間仍然開着,請選擇,但沒有房間選項顯示在下拉菜單中。我需要在某個地方的juqery代碼中包含'getRooms()'函數嗎? – user1914374