javascript - 在 jQuery Multiselect 中自动检查保存的数据

标签 javascript jquery html multi-select bootstrap-multiselect

我正在使用这个 jQuery Multiselect 插件 https://github.com/nobleclem/jQuery-MultiSelect将我所有启用了多个属性的选择框转换为带有复选框的下拉框。 我从数据库中加载选择框中的选项。 提交表单后,我可以保存多个选定的数据,但是当我从数据库中检索数据时,我无法通过选中匹配的复选框将保存的数据显示回多选框中。

多选插件有一个loadOptions 方法,但使用该方法我必须生成所有带有选项名称、选项值和检查状态的选项数据,并将其设置到多选插件。如果我有一组必须在多选插件中检查/选择的数据,我该如何轻松地做到这一点?

HTML

<select name="abc" id="abc" multiple title="Test Number?">
    <option value="1">Test 1</option>
    <option value="2">Test 2</option>
    <option value="3">Test 3</option>
    <option value="4">Test 4</option>
    <option value="5">Test 5</option>
</select>

JS(我有多个多选框,如下图启动)

$.each($("select[multiple]"), function (key, selectbox) {
    $("#" + selectbox.id).multiselect({
        texts: {placeholder: $("#" + selectbox.id).attr("title")}
    });
});

我保存的数据数组是[1,3,4] 我需要将这些保存的数据设置到选择框并选中复选框,而无需通过 loadOptions 方法。

最佳答案

您可以使用 jQuery .filter()在你的 select options 上运行以在初始化 multiselect 插件之前预选那些想要的。

在这里,

$('option',this).filter((_,e) => saved_data.includes(+e.value)).prop('selected',true);

.multiselect() 调用之前预选每个选项。

let saved_data = [1, 3, 4];

$('select[multiple]').each(function() {
  $('option', this).filter((_, e) => saved_data.includes(+e.value)).prop('selected', true);

  $(this).multiselect({
    texts: {
      placeholder: $(this).attr("title")
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://springstubbe.us/projects/demos/jquery-multiselect/scripts/index.js?1523890673"></script>
<link rel="stylesheet" href="https://springstubbe.us/projects/demos/jquery-multiselect/styles/index.css?1518818712">

<select name="abc" id="abc" multiple title="Test Number?">
  <option value="1">Test 1</option>
  <option value="2">Test 2</option>
  <option value="3">Test 3</option>
  <option value="4">Test 4</option>
  <option value="5">Test 5</option>
</select>

关于javascript - 在 jQuery Multiselect 中自动检查保存的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50134888/

相关文章:

javascript - 测试 JavaScript 的最佳方法是什么?

javascript - ExtJS 4.2.1 无法更改覆盖商店的模型

jQuery 同时缩放和淡入淡出

html - CSS 类选择器悬停

html - 如何在CSS中将排名整齐地放在图片的左侧

javascript - 脚本/链接标签与 AJAX 加载

javascript - ReactJS 标题布局,你不应该在 <Router> 之外使用 <Link>

javascript - Firebase 实时数据库分页

jquery - 检测Leaflet Map是否处于全屏模式

javascript - 动态表上的 CSS 奇数和偶数