过滤器选择下拉按另一个下拉列表选择的组(使用JQuery)

时间:2017-05-22 13:13:51

标签: jquery asp.net-mvc drop-down-menu jquery-chosen

我有一个ASP.NET MVC程序,它包含两个下拉列表,Country和Locations。 两者都是从存储在ViewBag中的SelectLists填充的。

我想要做的是在第一个下拉列表中选择该国家/地区时按组(国家/地区)过滤位置。 (通过告诉程序隐藏该组中没有的选项,或以某种方式自动填充选定的搜索栏中的组?)

我尝试了各种解决方案,但无法让它发挥作用。

这是我尝试在线的其他潜在解决方案:

        $("#Countries").on('change', function (evt, params) {
            var selected = params.selected;

            //var optGroup = $('optgroup[label="' + selected + '"]')[0].outerHTML;
            var optGroup = $('optgroup[label="' + selected + '"]').html();
            $("#Locations").html(optGroup);
            $("#Locations").trigger("chosen:updated");

        });

任何帮助将不胜感激 感谢。

修改
我已经得到了这个解决方案,但它取代了位置'列表所以我不能第二次过滤。

EDIT2
这些是来自控制器的两行,它将数据存储到ViewBag中:

ViewBag.Countries = new MultiSelectList(db.tblCountries, "CountryID", "CountryName");
ViewBag.Locations = new MultiSelectList(db.tblLocations, "LocationID", "LocationName", "tblCountry.CountryName");

如果您知道有任何其他方法可以解决此问题,请在下面发布。
谢谢

1 个答案:

答案 0 :(得分:0)

再次绑定html之前,只需清空:

 $("#Countries").on('change', function (evt, params) {
        var selected = params.selected;

        //var optGroup = $('optgroup[label="' + selected + '"]')[0].outerHTML;
        var optGroup = $('optgroup[label="' + selected + '"]').html();
        $("#Locations").empty();
        $("#Locations").html(optGroup);
        $("#Locations").trigger("chosen:updated");

    });