【发布时间】:2016-12-24 20:40:21
【问题描述】:
我有 3 个下拉列表,这些值是用 mysql 动态填充的。现在,我正在尝试级联 3 下拉菜单,但 JS 脚本不起作用。
我想做的是:
案例 1:如果用户从下拉列表 #1 中选择一个值,下拉列表 #2 的值取决于下拉列表 #1,下拉列表 #3 的值取决于下拉列表 #2。例如。州-市-大道
案例 2:用户可以从 3 个下拉菜单中进行选择。
案例 3 和 4:如果用户从下拉列表 #2 中选择,下拉列表 #3 的值取决于下拉列表 #2(但如果下拉列表 #2 已经存在,则在下拉列表 #3 中选择一个值是可选的)
表格:
<form action='' method='post' id='loc'>
<select name="state" id="filter_region" class="state">
<option name="default" class="default" value="State" readonly>State</option>
<?php
foreach($result_state as $option){
if(isset($_POST['state']) && $_POST['state'] == $option->state)
echo '<option name="state" class="filter_by" selected value="'. $option->state .'">'. $option->state .'</option>';
else
echo '<option name="state" class="filter_by" value="'. $option->state .'">'. $option->state .'</option>';
};
?>
</select>
<select name="city" id="filter_city" class="city">
<option name="default" class="default" value="City" readonly>City</option>
<?php
foreach($result_city as $option){
if(isset($_POST['city']) && $_POST['city'] == $option->city)
echo '<option name="city" class="filter_by" selected value="'. $option->city .'">'. $option->city .'</option>';
else
echo '<option name="city" class="filter_by" value="'. $option->city .'">'. $option->city .'</option>';
};
?>
</select>
<select name="avenue" id="filter_mall" class="avenue">
<option name="default" class="default" value="Avenue" readonly>Avenue</option>
<?php
foreach($result_avenue as $option){
if(isset($_POST['avenue']) && $_POST['avenue'] == $option->avenue)
echo '<option name="avenue" class="default" selected value="'. $option->avenue .'">'. $option->avenue .'</option>';
else
echo '<option name="avenue" class="filter_by" value="'. $option->avenue .'">'. $option->avenue .'</option>';
};
?>
</select>
<input type="submit" value="submit" class="submit"/>
</form>
JS:
function cascadeSelect(parent, child){
var childOptions = child.find('option:not(.default)');
child.data('options',childOptions);
parent.change(function(){
childOptions.remove();
child
.append(child.data('options').filter('.filter_by' + this.value))
.change();
})
childOptions.not('.default, .filter_by' + parent.val()).remove();
}
$(function(){
cascadeForm = $('.loc');
state= cascadeForm.find('.state');
city= cascadeForm.find('.city');
avenue= cascadeForm.find('.avenue');
cascadeSelect(state, city);
cascadeSelect(city, avenue);
});
【问题讨论】:
标签: javascript php jquery drop-down-menu cascadingdropdown