如果你不想使用Ajax可以設置不同的列表起來常規的JavaScript時,頁面加載腳本標籤,然後第一個下拉菜單的'onchange'將第二個下拉列表的內容切換到您需要的任何預建立的組中。
基本上有一個JavaScript函數中的第二個下拉列表的所有不同的可能選項,當第一個下拉改變時根據需要重建下拉列表。
這將需要JavaScript,PHP和MySQL(您已經使用)的組合,並且根本不需要任何Ajax甚至jQuery。
例如,用這樣的onChange設置你的第一條語句。值,這樣,當它改變它發送的值的函數(記住設置ID,以及使我們可以使用的getElementById):
<select name="courseName" id="courseName" onChange="setBranchList(this.value)" >
有關courseName SELECT語句中一個重要的注意 - 在所提供的例子每個選項的「值」都是空的 - 爲解決此問題而設置的工作很重要。就像這樣:
<option value="<?php echo $row['courseID']; ?>"><?php echo $row['courseName']; ?></option>
的選擇對於第二個下拉可能是這樣的(ID需要設置):
<select name="sDepartment" id="sDepartment">
然後有一個JS函數像這樣一些PHP與嵌套,而內循環選擇外循環中第一個下拉列表的所有值,然後爲內循環中第二個下拉列表的所有可能值創建構建語句。
<script type="text/javascript">
function setBranchList(courseID)
{
var selector_to_fill = document.getElementById("sDepartment");
selector_to_fill.options.length = 0;
<?php
$course_query = "SELECT * FROM courses ORDER BY courseID";
$course_result = mysql_query($course_query);
while ($course_detail = mysql_fetch_array($course_result))
{ ?>
if (courseID == '<?php echo $course_detail['courseID']; ?>'){
<?php $list_count = 0;
$branch_query = "SELECT * FROM branch WHERE courseID = '$course_detail[courseID]' ORDER BY branchID";
$branch_result = mysql_query($branch_query);
while ($branch_detail = mysql_fetch_array($branch_result))
{ ?>
selector_to_fill.options[<?php echo $list_count; ?>]=new Option("<?php echo $branch_detail['branchName']; ?>", "<?php echo $branch_detail['branchID']; ?>", false, false);
<?php
$list_count++;
} ?>
}
<?php
} ?>
}
</script>
當用戶訪問你的頁面時,PHP建立了一系列的IF在setBranchList函數語句根據您分貝任何的把它發送給用戶之前,還等什麼,用戶得到的是一些JavaScript,看起來像這樣:
if (courseID == '1'){
selector_to_fill.options[0]=new Option("Department You Study", "", false, false);
selector_to_fill.options[1]=new Option("Civil Engineering", "1", false, false);
selector_to_fill.options[2]=new Option("Computer Sci & Technology", "2", false, false);
selector_to_fill.options[3]=new Option("Electrical Engineering", "3", false, false);
}
if (courseID == '2'){
selector_to_fill.options[0]=new Option("Department You Study", "", false, false);
selector_to_fill.options[1]=new Option("E&TC", "4", false, false);
selector_to_fill.options[2]=new Option("Mechanical Engineering", "5", false, false);
}
if (courseID == '3'){
selector_to_fill.options[0]=new Option("Department You Study", "", false, false);
}
if (courseID == '4'){
selector_to_fill.options[0]=new Option("Department You Study", "", false, false);
}
if (courseID == '5'){
selector_to_fill.options[0]=new Option("Department You Study", "", false, false);
}
}
在此示例一些注意事項:
的 'selector_to_fill.options.length = 0;'部分在每次調用函數時清除第二個列表中的所有選項
該列表使用DOM與'new Option'構建。
使用php $ list_count變量,因爲select語句中的每個選項都需要一個以0開頭的索引。此變量表示每個項目的索引並通過每個循環重置,以便索引始終正確遞增。
我建立了這個很久以前在我瞭解了jQuery和Ajax和發佈,以確保它仍然有效之前再次測試該解決方案:對
使用一些JavaScript。 –
您需要嘗試Ajax。 –
您可以使用Ajax請求來完成此操作,或者在不同的下拉列表中獲取所有值,並使用JS僅顯示特定的值。 –