apa*_*eja 1 html javascript php combobox
我想创建HTML Dynamic Combobox,它使用来自db的php脚本和另一个动态Combobox的onselection更改值进行填充.最初第二个组合框应该是不可见的,并且在选择第一个组合框时,第二个组合框可见与相似数据相关.例如,我有这个表:
Category Name
Airport ABC
Airport XYZ
College a1
College b1
College b2
busstop a
busstop b
busstop c
busstop d
Run Code Online (Sandbox Code Playgroud)
因此,1st Combobox将包含Unique Category列表(如:Airport,College,busStop),并且在此选择的基础上启用第二个组合框,其中包含相关值,如果用户选择Airport,则第二个组合框将仅包含(ABC,XYZ).
我基本上只想用HTML,JAVASCRIPT和PHP来做这件事.
任何建议表示赞赏..
使用下面的代码片段,我假设你有一个数组填充数据库行作为对象,我将其命名为$ results;
编辑:如何获取查询对象:http: //www.php.net/manual/en/mysqli-result.fetch-object.php
我首先收集用于创建组合框的数据:
$combobox_data = array();
$results = mysqli_query("SELECT * FROM TABLE");
//create a multi dimensional array with names per category
while($row = mysqli_fetch_object($results)){
$combobox_data[$row->Category][] = $row->Name;
}
$category_combobox_html = "";
$name_combo_boxes_html = "";
//create category combo_box
foreach($combobox_data as $category=>$names){
//Add category option to category combo-box
$category_combobox_html .= '<option value="'.$category.'">'.$category.'</option>';
//Create Names combo-box for this category
$name_combo_boxes_html .= '<select id="'.$category.'" name="'.$category.'" class="hidden_combobox">';
//loop names, to add Names in the combo-box for this category
foreach($names as $name){
$name_combo_boxes_html .= '<option value="'.$name.'">'.$name.'</option>';
}
//end your combo box for this category
$name_combo_boxes_html .= '</select>';
}
Run Code Online (Sandbox Code Playgroud)
你的CSS
<style type="text/css" media="screen">
.hidden_combobox{
display:none;
}
</style>
Run Code Online (Sandbox Code Playgroud)
你的HTML
<select name="categories" id="categories">
<?php echo $category_combobox_html; ?>
</select>
<?php echo name_combo_boxes_html ;?>
Run Code Online (Sandbox Code Playgroud)
你的javascript
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
//when you select something from category box
$("#categories").change(function(){
//get selected category
var selectedValue = $(this).find(":selected").val();
//hide all nameboxes
$('.namebox').each(function(){
$(this).hide();
});
//show combobox for this select
$('#'+selectedValue).show();
});
</script>
Run Code Online (Sandbox Code Playgroud)
你的结果是这样的:
除非您选择与combo_box匹配的类别,否则将隐藏所有名称组合框
<select name="categories" id="categories">
<option value="Airport">Airport</option>
<option value="College">College</option>
<option value="busstop">busstop</option>
</select>
<select id="Airport" name="Airport" class="namesbox hidden_combobox">
<option value="ABC">ABC</option>
<option value="XYZ">XYZ</option>
</select>
<select id="College" name="College" class="namesbox hidden_combobox">
<option value="a1">a1</option>
<option value="b1">b1</option>
<option value="b2">b2</option>
</select>
<select id="busstop" name="busstop" class="namesbox hidden_combobox">
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
<option value="d">d</option>
</select>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15230 次 |
| 最近记录: |