javascript - 根据第一个多选下拉列表的选择填充下拉列表

标签 javascript jquery html dropdown

因此,我设法根据第一个下拉列表中的选择更改第二个下拉列表中的选项,但是我希望用户能够在第一个下拉列表中选择多个选项,然后在第二个下拉列表中显示所有相关选项。

到目前为止我有这个:

https://jsfiddle.net/jkxzy87v/1/

HTML

<select name="County" id="county" multiple="multiple">
  <option value="Kent">Kent</option>
  <option value="Sussex">Sussex</option>
  <option value="Devon">Devon</option>
</select>
<select name="Park" id="parks">
  <option>Select a park</option>
</select>

Jquery

$(document).ready(function() {
  $county = $("select[name='County']");
  $Park = $("select[name='Park']");

  $county.change(function() {

    if ($(this).val() == "Kent") {
      $("select[name='Park'] option").remove();
      $("<option>Kent Park 1</option>").appendTo($Park);
      $("<option>Kent Park 2</option>").appendTo($Park);
    }

    if ($(this).val() == "Sussex") 
    {
      $("select[name='Park'] option").remove();
      $("<option>Sussex Park 1</option>").appendTo($Park);
      $("<option>Sussex Park 2</option>").appendTo($Park);
    }

    if ($(this).val() == "Devon") 
    {
      $("select[name='Park'] option").remove();
      $("<option>Devon Park 1</option>").appendTo($Park);
      $("<option>Devon Park 2</option>").appendTo($Park);
    }

  });
});

正如您所看到的,从下拉列表 1 中选择单个选项是可行的,但选择多个选项不会将所有选项添加到下拉列表 2 中。

例如。如果您选择“肯特”和“苏塞克斯”,您应该会在下拉菜单中看到两个“肯特公园 1”、“肯特公园 2”、“苏塞克斯公园 1、苏塞克斯公园 2”

期待您的帮助!

最佳答案

所有三个条件都应从 if ($(this).val() == "Kent") { 更改为 if (selected_val.indexOf("Kent") != = -1) { 并在更改事件时仅删除顶部的选项一次。

请检查下面的代码片段以了解更多详细信息。

$(document).ready(function() {
  $county = $("select[name='County']");
  $Park = $("select[name='Park']");

  $county.change(function() {
    var selected_val = $(this).val();
    $("select[name='Park'] option").remove();
    if (selected_val.indexOf("Kent") !== -1) {
      $("<option>Kent Park 1</option>").appendTo($Park);
      $("<option>Kent Park 2</option>").appendTo($Park);
    }

    if (selected_val.indexOf("Sussex") !== -1) 
    {
      $("<option>Sussex Park 1</option>").appendTo($Park);
      $("<option>Sussex Park 2</option>").appendTo($Park);
    }

    if (selected_val.indexOf("Devon") !== -1) 
    {
      $("<option>Devon Park 1</option>").appendTo($Park);
      $("<option>Devon Park 2</option>").appendTo($Park);
    }

  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="County" id="county" multiple="multiple">
  <option value="Kent">Kent</option>
  <option value="Sussex">Sussex</option>
  <option value="Devon">Devon</option>
</select>
<select name="Park" id="parks">
  <option>Select a park</option>
</select>

关于javascript - 根据第一个多选下拉列表的选择填充下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39591578/

相关文章:

javascript - 如何将 Web 组件分离到单个文件并加载它们?

javascript - 在 Nodewekit 中运行 Hapi.js

jquery - 使用 scrollTop() 的 jquery float 菜单

javascript - jQuery、fadeToggle 和列表项

javascript - 为什么这个函数在 jquery 1.9.1 中不再起作用?

javascript - 在 HTML 页面上显示来自 Node.js 服务器的数据

javascript - Chrome 扩展仅在具有特定内容的类上注入(inject) css

javascript - 导入 Typescript 时找不到 Webpack 模块

javascript - 使用函数式方法解析本地 JSON 文件的替代方法?

php - 如何在一个链接属性中添加更多href地址?