如何循环通过单选/复选框输入并将所选输入的 id 推送到数组
Posted
技术标签:
【中文标题】如何循环通过单选/复选框输入并将所选输入的 id 推送到数组【英文标题】:How to loop through radio/checkbox inputs and push the id of selected ones to arrays 【发布时间】:2017-03-09 00:06:54 【问题描述】:我已经建立了一个多项选择测验。有些答案有无线电框,其他答案有复选框,因为有多个正确的答案。我之前使用过一个脚本来获取所有 :checked 输入的 id 并将它们放入一个数组中以发送到服务器进行评估。
数组看起来像这样:
userAnswers = [ '1c', '2d', '3a', '3b', '3c', '3d', '4b', '5c', '5d', '6d' ]
我已经成功地通过所有的所有内容循环:检查输入并将其html ID添加到数组,但我需要更改数据结构,以便更容易评估服务器上的答案。
我正在尝试将数据结构更改为以下内容:
answers = [
['c'], // Question 1 answers
['d'], // Question 2 answers
['a', 'b', 'c', 'd'], // 3
['b'], // 4
['c', 'd'], // 5
['d'], // 6
]
要执行此操作,我正在尝试创建一个找到的循环:基于它们的[数据问题编号]值检查的输入,然后将其HTML ID添加到数组,然后将该数组添加到数组中以上。
到目前为止,我得到的最接近的是以下内容:
let numberOfQuestions = Assessments.findOne().numQuestions; //returns the number of questions in the quiz e.g '25'
let selectedAnswers = [];
for(let i = 1; i <= numberOfQuestions; i++)
let answers = $("input[data-question-number=" + i + "]:checked").attr('id');
这几乎是有效的,除了问题是.ATTR()只返回匹配的第一个属性,所以在我有4个复选框的一些问题中,用户可能已检查其中3个,我只会得到第一个还给了我。
如果有人可以帮助我修改它,以便它插入所有 :checked 输入的 id,那将是很棒的。谢谢!
【问题讨论】:
【参考方案1】:let answers = []
for(let i = 1; i <= numberOfQuestions; i++)
let temp = []
$("input[data-question-number=" + i + "]:checked").each(function()
temp.push(this.id)
);
answers.push(temp)
【讨论】:
【参考方案2】:您将不得不循环遍历结果元素以逐个获取 id。
for(let i = 1; i <= numberOfQuestions; i++)
let answers = []
$("input[data-question-number=" + i + "]:checked").each(function()
answers.push(this.id)
);
【讨论】:
谢谢,这绝对有帮助,但我接受的答案 100% 解决了问题。非常感谢以上是关于如何循环通过单选/复选框输入并将所选输入的 id 推送到数组的主要内容,如果未能解决你的问题,请参考以下文章
html Gravity Wiz // Gravity Forms // GF 1.8.21单选按钮和复选框输入ID更改
html Gravity Wiz // Gravity Forms // GF 1.8.21单选按钮和复选框输入ID更改
单选按钮/复选框/选择选项 - 添加所选项目的价格(价值)总计,并将它们添加到数组中
Selenium—选择框的相关操作(单选框多选框复选框下拉框)