javascript - 将选择多个输入转换为 bool 数组

标签 javascript jquery html

获取表示是否选择该选项的 bool 值数组的最佳方法是什么?

例如:

当标记为:

<select id="myMultipleSelect" multiple>
    <option selected>Urgent</option>
    <option selected>Important</option>
    <option selected>Other</option>
</select>

所需的结果数组应构造为:

  • 所有选项均已选中:[true,true,true]

  • 仅选择紧急选项:[true,false,false]

  • 选择紧急重要选项:[true,true,false]

<小时/>

我尝试使用 $.val() 但它返回(当选择所有选项时)["Urgent","Important","Other"]Urgent 仅选择选项才会返回:["Urgent"]

$('#myMultipleSelect').on('change', event => {               
    console.log($(event.currentTarget).val());
});

有什么优雅的方式来实现这个目标吗?

最佳答案

您可以使用 jQuery .get() 的组合和 Array#map

  • $('option',this) 从您的 select 中选择每个 option

  • .get() 从 jQuery 选择器返回 Javascript DOM 元素

  • .map() 遍历您的数组

  • $(e).is(':selected') 如果您的选项已选择或未选择,则返回 truefalse

$('#myMultipleSelect').on('change', function(){               
    console.log($('option',this).get().map(e => $(e).is(':selected')));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="myMultipleSelect" multiple>
    <option selected>Urgent</option>
    <option selected>Important</option>
    <option selected>Other</option>
</select>

关于javascript - 将选择多个输入转换为 bool 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49488073/

相关文章:

javascript - 谷歌地图调整大小 css 显示无

javascript - 在嵌套的 div 中显示谷歌地图(拆分器)

javascript - Jquery - .forEach() 在 IE8 中不工作

javascript - Highstock/highcharts 在单个工具提示中显示多个 y 轴值

javascript - 我的 X 轴没有呈现我想要的所有刻度 - D3 JS

javascript - 如何使移动设备中的 jquery setinterval 移动更顺畅?

jquery - 无法水平对齐按钮

javascript - JQM : Why does the same jQuery selector return a different number of elements depending on the current page?

javascript - 如何根据封面照片的 div 高度和位置调整图像大小?

PHP MySQL jQuery/AJAX 问题