我正在建立一个在线测试网站,其中有多个问题。我有复选框来选择答案。还有一个问题。问题是如何为每个问题的答案获取所选复选框的值,并以
等形式发送它们假设第一个问题(a,b,c,d)有四个选项,问题id为2。然后,当用户选择选项b,c时,数据应该通过jquery获取并存储在变量中。我已经用过这个了。我的代码是
var chkArray = [];
var chkQues = [];
var answer;
$(".answer_chk_box:checked").each(function() {
chkArray.push($.trim($(this).val()));
chkQues.push($.trim($(this).attr("qid")));
//alert(chkQues);
});
answer = chkArray.join(',');
Question_id=chkQues
如果只有一个问题,这个工作正常。 answer is "b,c"
和question_id的值为2
。但是当有多个问题时。一切都搞砸了。我们怎样才能将多个问题的值分开,这样对于一个问题的答案,我们可以正确发送一个ajax调用。
答案 0 :(得分:2)
我说你只是创建一个对象来描述问答对。
function getQandAs(){
//Object array to store all of our data
var questionsAndAnswers = [];
$(".answer_chk_box:checked").each(function() {
//This object represents a question ID and all of its selected answers
var questionAnswer = new Object();
questionAnswer.answer = $.trim($(this).val());
questionAnswer.questionId = $.trim($(this).attr("qid"));
questionsAndAnswers.push(questionAnswer);
});
//these lines just demo it working
$(questionsAndAnswers).each(function(index){
alert(questionsAndAnswers[index].answer + " & " + questionsAndAnswers[index].questionId);
});
}
答案 1 :(得分:1)
只需在复选框字段中使用name="field[]"
:
<form id="questions">
<article id="question-1">
<label>
<input type="checkbox" name="question-1-choice[]" value="A" />
Choice A
</label>
<label>
<input type="checkbox" name="question-1-choice[]" value="B" />
Choice B
</label>
<label>
<input type="checkbox" name="question-1-choice[]" value="C" />
Choice C
</label>
</article>
<article id="question-2">
<label>
<input type="checkbox" name="question-2-choice[]" value="A" />
Choice A
</label>
<label>
<input type="checkbox" name="question-2-choice[]" value="B" />
Choice B
</label>
<label>
<input type="checkbox" name="question-2-choice[]" value="C" />
Choice C
</label>
</article>
</form>
答案 2 :(得分:1)
创建2D数组选项,包括问题ID和答案ID。
var chkArray = [][];
$(".answer_chk_box:checked").each(function() {
chkArray.push($.trim($(this).attr("qid")), $.trim($(this).val()));
});
答案 3 :(得分:1)
首先不建议使用自定义属性。最好使用数据属性。所以你有这样的输入:
<input type="checkbox" value="something" data-qid="1" class="answer_chk_box" />
您应该将所有答案收集到哈希:
var answers = {};
$(".answer_chk_box:checked").each(function() {
var qid = $(this).data('qid');
var answer = $.trim($(this).val());
if(!answers[qid]){
answers[qid] = [];
}
if(answers[qid].indexOf(answer) === -1){
answers[qid][] = answer;
}
});
//console.log(answers);