javascript - 将复选框的javascript转换为选择类型
问题描述
之前复选框的代码是
<li class="list-group-item">
<div class="form-check">
<label class="form-check-label">
<input type="checkbox" class="form-check-input common_check" value="<?= $row['Year']; ?>" id="Year"><?= $row['Year']; ?>
</label>
</div>
</li>
和用于获取过滤文本的 js 是
function get_filter(text_id)
{
var filterData = [];
$('#'+text_id+':checked').each(function(){
filterData.push($(this).val());
});
return filterData;
}
现在,如果我想将其转为选择选项菜单栏
<option class="common_check" value="<?= $row['Year']; ?>" id="Year"><?= $row['Year']; ?>
那么这个javascript应该是什么?
解决方案
有几件事你需要改变:
看起来您允许用户选择多个
option
. 为此,请确保multiple
将属性分配给您的select
元素。将
onchange
处理程序添加到您的select
过滤所有选定的索引
<select id="mySelect" onchange="handler()" multiple>
<option id="some-id" value="some-value"></option>
</select>
var filtered;
function handler() {
const selector = document.getElementById('mySelect');
const selected = Array.prototype.filter.call(selector.options, o => o.selected);
filtered = selected.map(s => s.value);
}
每次更改选项(取消选择或添加选项)时,处理程序都会重新分配数组。这将节省您保持数组唯一性的工作,因为不必每次都检查数组以查看该值是否已经存在。
推荐阅读
- r - 在 ggplot 中,如何使用 data.frame 中的值参数化多个曲线/函数并将它们绘制在不同的方面?
- c# - 编辑另一个长度不同的数组C#
- c++ - 具体来说,标准规定修改 const 对象是未定义的行为吗?
- tf-idf - 有人可以检查我的 tf-idf 加权是否正确吗?
- terraform - 如何在 terraform cloud 中从 git 加载文件?
- objective-c - 在视图控制器之间快速导航
- python - 从与另一个数据帧重叠的数据帧中删除行
- sql - 识别安装后对 SQL 数据库结构的更改
- mysql - MySQL:用单个查询在整个表中用实际 NULL 值替换“NULL”作为字符串
- asp.net - 如何在 ASP.NET Core MVC Web 应用程序项目中本地化数据库中的数据