javascript - 如何在字符串中获取选定的多复选框值
问题描述
如何在逗号分隔的字符串中获取选中的多复选框值,而不是在数组中?我有一个多重复选框,如下所示
<div class="col-md-7 form-inline mediaTypesContain">
<div class="checkbox">
<input type="checkbox" id="mediaTypes" value="Video">
<label for="mediaTypes">
Video
</label>
</div>
<div class="checkbox">
<input type="checkbox" id="mediaTypes-1" value="Audio">
<label for="mediaTypes-1">
Audio
</label>
</div>
<div class="checkbox">
<input type="checkbox" id="mediaTypes-2" value="Images">
<label for="mediaTypes-2">
Images
</label>
</div>
<div class="checkbox">
<input type="checkbox" id="mediaTypes-3" value="PDF Files">
<label for="mediaTypes-3">
PDF Files
</label>
</div>
<div class="checkbox">
<input type="checkbox" id="mediaTypes-4" value="I don't know">
<label for="mediaTypes-4">
I don't know
</label>
</div>
我正在尝试使用以下 JS 仅获取检查的值。
var mediaTypes = $('.checkbox')[0].innerText + ',' + $('.checkbox')[1].innerText + ','+ $('.checkbox')[2].innerText + ','+ $('.checkbox')[3].innerText + ','+ $('.checkbox')[4].innerText
但是,即使未选择该字段,JS 也会返回所有文本。如何在逗号分隔的字符串中获取选中的多复选框值,而不是在数组中?
解决方案
不是最短或最简洁的脚本......但为了更好地解释为什么你不在你想去的地方......
var mediaTypes = $('.checkbox')[0].innerText
在这里,您的 jquery 选择器没有得到输入框。它获取输入框的父 div... 当您抓取 innerText... 它正在寻找显示的结果文本。没有考虑实际输入元素本身的检查值。
$('.checkbox :checkbox');
此选择器将返回 type=checkbox 的所有元素以及 class=checkbox 的父元素的数组。
type=checkbox 的元素有一个名为checked 的属性,该属性为真或假。您可以检查其值以确定是否将其添加到您的字符串中。
以下代码片段使用基本的 for 循环来获取所有复选框元素,确定选中的元素,然后将它们放入字符串中,然后将其输出到控制台。其他答案使用更高级的 jquery 选择器和数组/匿名函数来做基本相同的事情。
function onTestClick() {
var checkedString = '';
for (var i = 0; i < 5; i++) {
var element = $('.checkbox :checkbox')[i];
if (element.checked) {
if (checkedString.length > 0) {
checkedString += ',';
}
checkedString += element.value;
}
}
console.log('checkedString = ' + checkedString);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col-md-7 form-inline mediaTypesContain">
<div class="checkbox">
<input type="checkbox" id="mediaTypes" value="Video">
<label for="mediaTypes">Video</label>
</div>
<div class="checkbox">
<input type="checkbox" id="mediaTypes-1" value="Audio">
<label for="mediaTypes-1">Audio</label>
</div>
<div class="checkbox">
<input type="checkbox" id="mediaTypes-2" value="Images">
<label for="mediaTypes-2">Images</label>
</div>
<div class="checkbox">
<input type="checkbox" id="mediaTypes-3" value="PDF Files">
<label for="mediaTypes-3">PDF Files</label>
</div>
<div class="checkbox">
<input type="checkbox" id="mediaTypes-4" value="I don't know">
<label for="mediaTypes-4">I don't know</label>
</div>
<button id="testButton" onClick="onTestClick()">Test</button>
</div>
推荐阅读
- java - WhatsApp 状态保存在 Android 11 或更高版本中
- npm - 我如何知道 npm 包中的脚本选项?
- android - Startlocalonlyhotspot 在 Android 11 中不起作用
- python - Python for 循环:循环分层数据
- c# - 用于在 WinForms 设计器中生成 AddRange() 的自定义 TypeConverter 不起作用
- python - 使用字典列表创建数据框
- angular-reactive-forms - 在 HTML 中循环一个 FormArray 并在没有 ngFor 的情况下附加 FormControl
- css - MUI 日期选择器影响反应表中的 Mui 分页 css
- reactjs - 是否可以在 ckeditor 中插入我们自定义图库中的图像?
- python - 在 IIS 上使用烧瓶 API 部署后 xlwings 库无法正常工作