【问题标题】:Filter <select> options depending on chosen option from another <select>根据从另一个 <select> 中选择的选项过滤 <select> 选项
【发布时间】:2015-09-20 01:46:55
【问题描述】:

我需要帮助:

我有两个下拉菜单(HTML 选择):州和城市。

在状态选择元素中,有不同状态的选择。

在城市中,有一些选项以以下形式命名:州-城市(例如巴西-圣保罗)。在第二个下拉列表中,列出了所有国家/地区的所有城市。

现在我需要做以下事情:

当我从第一个下拉列表中选择一个州时,我需要制作一种过滤器,所以当我从第一个下拉列表中选择一个巴西时,第二个下拉列表需要自动过滤到仅以巴西开头的城市-...

http://marbestates.com/

页面顶部的搜索表单-请查看城市和位置

我想这可以用 jQuery 来完成,但我需要一些提示,jsfiddle 等。

提前谢谢你

【问题讨论】:

  • 请分享一些相关代码,以便我们更好地帮助您
  • marbestates.com页面顶部的搜索表格..请查看城市和位置..谢谢
  • 您可以进行网络搜索;已经有许多插件或解决方案。或者,如果你没有成功,你可以在这里发布相关的 HTML 和 JavaScript/jQuery。

标签: jquery drop-down-menu


【解决方案1】:
$("#select1").change(function() {
if ($(this).data('options') === undefined) {
  /*Taking an array of all options-2 and kind of embedding it on the select1*/
 $(this).data('options', $('#select2 option').clone());
 }
 var id = $(this).val();
 var options = $(this).data('options').filter('[value=' + id + ']');
 $('#select2').html(options);
 });

【讨论】:

    【解决方案2】:

    试试这个:您可以根据选择的状态过滤选项并显示所有选项。您需要从可见城市中设置默认选定城市。

    示例 HTML:

    <select id="state">
        <option>Brazil</option>
        <option>Ghana</option>
    </select>
    
    <select id="city">
        <option>Brazil-city1</option>
        <option>Brazil-city2</option>
        <option>Brazil-city3</option>
        <option>Ghana-city1</option>
        <option>Ghana-city2</option>
    </select>
    

    jQuery:

    $(function(){
        //function to show city
        var showCity = function(selectedState){
         $('#city option').hide();
            $('#city').find('option').filter(function(){
                var city = $(this).text();
                return city.indexOf(selectedState)!=-1;
            }).show();
            //set default value
            var defaultCity = $('#city option:visible:first').text();
            $('#city').val(defaultCity);
        };
    
        //set default state
        var state = $('#state').val();
        showCity(state);
    
        //on change event call showCity function 
        $('#state').change(function(){
           showCity($(this).val());
        });
    });
    

    JSFiddle Demo

    【讨论】:

    • 很好的解决方案!非常感谢 !但是现在我对默认值几乎没有问题。请参阅 www.marbestates.com。当我从下拉列表中选择 Marbella 时,没有显示默认值,需要点击查看。我只需要默认值设置,当点击马贝拉时,显示第一个显示的马贝拉城市。
    • 我无法打开 www.marbestates.com,因为访问被拒绝。您可以查看 jsfiddle 演示链接,我第一次设置默认值以及每当您更改状态时。请检查是否有任何其他 jQuery 或 JS 影响您的选择框。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    相关资源
    最近更新 更多