我想为国家/地区创建一个选择标记,当我们选择国家/地区时,它隐藏所有选项组及其选择标记的内容,除了optgroup及其内容与选定的国家/地区选项具有相同的标签,示例< / p>
<select name="country">
<option value="United States">United States</option> <!-- if I select US -->
<option value="Canada">Canada</option>
<option value="Mexico">Mexico</option>
</select>
<select name="country">
<optgroup label="United States">
<option value="California">California</option> <!-- Only these states -->
<option value="New York">New York</option> <!-- are displayed -->
</optgroup>
<optgroup label="Canada"> <!-- hidden-->
<option value="Ontario">Ontario</option> <!-- hidden-->
<option value="Quebec">Quebec</option> <!-- hidden-->
</optgroup>
<optgroup label="Mexico"> <!-- hidden-->
<option value="Baja California">Baja California</option> <!-- hidden-->
<option value="Mexico Estado">Mexico Estado</option> <!-- hidden-->
</optgroup>
</select>
感谢您的帮助
答案 0 :(得分:4)
这似乎对我有用:
$("select[name='country']:eq(0)").on("change", function() {
$("select[name='country']:eq(1)")
.find("optgroup,option")
.hide()
.filter("[label='" + this.value + "'],[label='" + this.value + "'] > *")
.show();
});
答案 1 :(得分:1)
我认为你不能以跨浏览器的方式做到这一点。我想说最好的选择是存储所有选项并重新创建带有过滤选项的选择
答案 2 :(得分:0)
从HTML 5开始,我们有hidden
属性。我最近不得不做类似的事情,尽管有了React,所以我会把确切的管道留给你,但你可以将你的optgroup
设置为hidden
一个
<select name="country">
<optgroup label="United States">
<option value="California">California</option> <!-- Only these states -->
<option value="New York">New York</option> <!-- are displayed -->
</optgroup>
<optgroup label="Canada" hidden> <!-- hidden-->
<option value="Ontario">Ontario</option> <!-- hidden-->
<option value="Quebec">Quebec</option> <!-- hidden-->
</optgroup>
</select>