【发布时间】:2018-07-24 20:59:17
【问题描述】:
我有 2 个下拉菜单 - 一个用于州,一个用于城市。我想这样做,当 State 下拉菜单位于默认选定值 (--State--) 时,City 下拉菜单甚至不可见。但除此之外,只要选择任何一个状态,下拉框就会出现。
我当前的代码是这样的,“城市”选项会根据您选择的“州”而改变。由于我不明白的原因,这个 JSFiddle 不起作用,但它在括号中工作。 http://jsfiddle.net/a70zjg9p/4/
我只需要帮助实施:
if --State-- (default value) is selected, make City dropdown invisible
在我已有的代码之上编写代码。
$(document).ready(function() {
var optarray = $("#layout_select").children('option').map(function() {
return {
"value": this.value,
"option": "<option value='" + this.value + "'>" + this.text + "</option>"
}
})
$("#column_select").change(function() {
$("#layout_select").children('option').remove();
var addoptarr = [];
for (i = 0; i < optarray.length; i++) {
if (optarray[i].value.indexOf($(this).val()) > -1) {
addoptarr.push(optarray[i].option);
}
}
$("#layout_select").html(addoptarr.join(''))
}).change();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="column_select" id="column_select" style="height:35px;" class="required" title=" * Please provide your location">
<option selected value="col0">-- State --</option>
<option value="col1">Alabama</option>
<option value="col2">Florida</option>
<option value="col3">Texas</option>
</select>
<select name="layout_select" id="layout_select" style="height:35px;">
<option value="col0">-- City --</option>
<option value="col1">Montgomery</option>
<option value="col2">Orlando</option>
<option value="col3">Dallas</option>
</select>
【问题讨论】:
-
this.outerHTML可能是填充option的更好方法。 -
我在您的 javascript 中看不到任何会使 layout_select 不显示的内容。我确实看到了清空选项的逻辑。
-
另外,正如我在回答中所展示的,没有必要每次都重新创建选项。您可以简单地分离它们并重新连接您需要的那些。这使您不必重复生成元素。
标签: javascript jquery html dropdown