【发布时间】:2019-10-17 23:46:41
【问题描述】:
我正在创建一个包含三个下拉列表、国家、州和城市的表单。
在选择国家/地区时,应显示过滤后的州下拉菜单,并根据州选择相应的城市。
我的工作环境是,我无法进行任何 ajax 调用,因为所有国家、州、城市列表都通过后端 API 调用加载到 DOM 中。 因此,当页面加载时,所有国家/州/城市列表都会被加载。
我尝试过的: 我已经使用 jquery 过滤器来过滤 jquery 更改事件上的彻底选择值。
$(".country").on('change', function(event){
...
$('.state').html($('.state').find('option').filter('[value="' + this.value + '"]'));
...
}
类似地我写了一个改变状态下拉列表过滤城市的方法
HTML:
<select name="country" id="country" class="country">
<option value="US">USA</option>
<option value="AU">Australia</option>
...
</select>
问题: 这第一次完美运行。但是下次当我尝试再次更改国家(从美国到澳大利亚)时,方法正在搜索 在过滤的美国州中,并非所有州列表都是在第一次加载页面时加载的。所以下拉菜单是空白的。
有什么办法可以解决这个问题吗?
提前致谢。
【问题讨论】:
-
$('.state').html(.....) 将永久删除其余选项,因此您不会再获得它们。您应该将所有州和城市放在一个数组中,以便您可以使用它首先填充所有,然后过滤。或者更好的是先过滤数组(不是dom),然后生成select。
标签: javascript jquery html select drop-down-menu