需要帮助获取级联表单进行多项选择?

时间:2015-01-28 02:31:22

标签: jquery

我有一个基本形式,按动物类型过滤,('哺乳动物'显示'狗''松鼠'等)。但是,我还需要使用多种选择,同时选择“哺乳动物”和“哺乳动物”。和#39; Bird'会显示合并的结果(' Dog',' Squirrel' Hawk')而不是只替换另一个。

以下是我正在使用的代码。任何帮助表示赞赏!感谢。



$('select#list').change(function() {
    var target = $(this).data('target');
    $(target).children().addClass('hide');
    var show = $("option:selected", this).data('show');
    $(show).removeClass('hide');
});

.hide {
    display: none;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select id="list" multiple="multiple" data-target=".my-info-1">
  <option value="32" data-show=".Mam">Mammals</option>
  <option value="3" data-show=".Bird">Birds</option>
  <option value="4">Reptiles</option>
</select>
<select id="butts" class="my-info-1" multiple="multiple">
  <option class="Mam hide">Squirrel</option>
  <option class="Mam hide">Dog</option>
  <option class="Bird hide">Hawk</option>
  <option class="hss hide">Snake</option>
</select>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

将所有选定选项的data-show转换为以逗号分隔的列表:

$('select#list').change(function() {
    var target = $(this).data('target'),
        show = $("option:selected", this).map(function () {
            return $(this).data('show');
        }).get().join(",");

    $("#debug").text(show);

    $(target).children().addClass('hide').filter(show).removeClass('hide');
});
select {
    width: 100px;
    height: 100px;
}
.hide {
    display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select id="list" multiple="multiple" data-target=".my-info-1">
  <option value="32" data-show=".Mam">Mammals</option>
  <option value="3" data-show=".Bird">Birds</option>
  <option value="4" data-show=".hss">Reptiles</option>
</select>
<select id="butts" class="my-info-1" multiple="multiple">
  <option class="Mam hide">Squirrel</option>
  <option class="Mam hide">Dog</option>
  <option class="Bird hide">Hawk</option>
  <option class="hss hide">Snake</option>
</select>

<p id="debug"></p>