【问题标题】:Multiple selection dropdown list with jquery带有jquery的多选下拉列表
【发布时间】:2017-12-17 17:00:17
【问题描述】:

目前我正在自定义Multiple Selection Plugin 的多项选择下拉列表,这些是我将应用于我的自定义选择的行为:

  1. 选择父项时,将选择所有子项。
  2. 当所有子项都被选中时,父项也会被选中, 否则,如果其中一个孩子被取消选择,那么父母也将被取消选择。
  3. 当所有的孩子都被选中时,在选中的字段中应该只有父母的名字。
  4. 子级别也应作为第一级别。

(1)、(2)、(4) 我已经完成了。但是对于(3),我还没有想出任何解决方案。

这是多选的示例json字符串:

var _str = '{"10":{"0":"0","1":"DISPONIBILITES","2":"t","style":"font-weight: bold;"},"16":{"0":"0","1":"TRESORERIE NETTE","2":"t","style":"font-weight: bold;"},...."}}}';

这是我创建的https://jsfiddle.net/skL589uu/7/

如果这里有人能给我一些想法,那就太好了。

【问题讨论】:

    标签: javascript jquery html css drop-down-menu


    【解决方案1】:

    您不必为此编写任何自定义逻辑,multi-select.js 提供了一个名为 optGroups 的功能。

    只需在 HTML 中将子项分组到父组下,其余的就处理好了。

    这里是官方文档的链接,Multi-select OptGroups

    HTML 代码:

      <select multiple="multiple">
        <optgroup label="Group 1">
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="3">3</option>
        </optgroup>
        <optgroup label="Group 3">
          <option value="15">15</option>
        </optgroup>
      </select>
    

    JQUERY 代码:

    $(function() {
       $("select").multipleSelect({
         multiple: true,
         multipleWidth: 55,
         width: '100%'
       });
    });
    

    Live Demo @ JSFiddle

    【讨论】:

    • 选择html结构是从数据库返回的,所以我不想修改它。我忘了在我的问题中提到这一点。
    • 您将仅出于渲染的目的对其进行修改,因此它不会影响您在 DB 上的数据结构。因此,在解析 DOM 结构并将其映射到 Select 标签时,您只需创建一个 OptGroup 标签,然后在其中添加子元素。
    • OptGroup 不适用于具有多级的选择。
    • 您的权利 multi-select 库不支持 OptGroup 的多级列表。所以没有直接的解决方案,你需要有一些自定义逻辑来使用库提供的辅助方法来处理多选。例如。当所有子项都被选中时,您可以将父 id 设置为选择框,$('select').multipleSelect('setSelects', [parentId]);jsfiddle.net/dreamweiver/skL589uu/18。同样,您需要弄清楚如何处理其他情况。参考:wenzhixin.net.cn/p/multiple-select/docs/#methods
    • 你有一个脚本错误,应该调查一下。 @dreamweiver
    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2015-03-22
    • 2011-02-14
    • 2011-02-07
    • 2010-12-02
    • 1970-01-01
    相关资源
    最近更新 更多