从复选框中获取多个数据属性

时间:2015-05-04 18:29:28

标签: javascript jquery

我正在进行测验。

有些问题有多个答案。

我的HTML是:

<div>Which problems equal 4?</div>
<input type="checkbox" id="qid" class="checks" data-correct="yes">2 + 2<br />
<input type="checkbox" id="qid" class="checks" data-correct="no">2 - 2<br />
<input type="checkbox" id="qid" class="checks" data-correct="yes">2 * 2<br />

如果检查的答案错误或正确,我想提醒。

目前,我的Javascript看起来像这样:

function checkMsResults(){
    var result = $('input[name="qid"]:checked').attr("data-correct");
    if(result == '1'){
        result = "Answer is Correct";
    }
    else if(result == '0'){
        result = "Answer is Not Correct";
    }
    else{
        result = "Please make a selection";
    }
    alert(result + ".");
}

这将仅提醒一个选择。 有人可以教我如何循环每个,所以我可以提醒多个选择吗?

2 个答案:

答案 0 :(得分:3)

您有三个具有相同ID的输入,您不能这样做,ID必须是唯一的。

function checkMsResults() {
  if ($('input[name="quid"]:checked').length === 0) {
    var result = "Please make a selection";
    alert(result);
    return;
  }
  $('input[name="quid"]:checked').each(function() {
    var result;
    if (this.getAttribute("data-correct") === "yes") {
      result = "Answer is Correct";
    } else {
      result = "Answer is Not Correct"
    }
    alert(result);
  });
}

答案 1 :(得分:1)

清理原件。这是一个jsfiddle,它可以得到每个答案,然后将所有答案都放到一个数组中;你可以用它做任何你想做的事...... https://jsfiddle.net/r2xc22Ld/1/

function checkMsResults(){


var result = "";
var answers = [];
$('input[name="qid"]:checked').each(function() {
   answers.push($(this).attr('data-correct'));
});

//console.log(answers);
for(var i = 0; i< answers.length; i++){
    result += 'Question '+i+': ' + answers[i] +'\n';   
}
if(result==""){
    alert('make a selection...');
}else{
    alert(result);
}