从不同的问题中获取所选复选框的值

时间:2014-06-07 04:58:33

标签: jquery

我正在建立一个在线测试网站,其中有多个问题。我有复选框来选择答案。还有一个问题。问题是如何为每个问题的答案获取所选复选框的值,并以

等形式发送它们

假设第一个问题(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调用。

4 个答案:

答案 0 :(得分:2)

我说你只是创建一个对象来描述问答对。

http://jsfiddle.net/zGQH5/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);