我正在使用jQuery创建一个多项选择评估。目前DOM结构如下:
<button class="multiplesubmit">Check Answer</button>
<ul class="multiplechoice_answergroup">
<li class="multiplechoice_answer True"><input class="checkbox" type="checkbox" name="checkbox"> Answer 1</li>
<li class="multiplechoice_answer False"><input class="checkbox" type="checkbox" name="checkbox"> Answer 1</li>
<li class="multiplechoice_answer False"><input class="checkbox" type="checkbox" name="checkbox"> Answer 1</li>
<li class="multiplechoice_answer True"><input class="checkbox" type="checkbox" name="checkbox"> Answer 1</li>
</ul>
我需要编写一个函数,当单击该按钮时,查看是否勾选了复选框,并且li的类名称包含“True”。
到目前为止,这是我的jQuery:
$('.multiplechoice_answer .Paragraph').prepend('<input class="checkbox" type="checkbox" name="checkme" />');
$('.multiplechoice_wrap').prepend('<button class="submit_button multiplesubmit">Check Answer</button>');
$('.multiplesubmit').click(function() {
multipleChoiceCheck();
});
var multipleChoiceCheck = function() {
if($('input:checkbox[name=checkme]').is(':checked') && $('.multiplechoice_answer').hasClass('True')) {
alert('correct!');
}
};
答案 0 :(得分:2)
$('.multiplesubmit').click(function () {
var correctAnswers = $(this).next('ul').children('li').filter(function () {
return $(this).hasClass('True') && $(this).find('input[type="checkbox"]:checked').length>0;
});
if(correctAnswers.length>0) {
alert('found')
}
});
<强>更新强>
根据评论
$('.multiplesubmit').click(function () {
var correctAnswers = $(this).next('ul').children('li').filter(function () {
return $(this).hasClass('True') && $(this).find('input[type="checkbox"]:checked').length>0;
});
var wrongAnswers = $(this).next('ul').children('li').filter(function () {
return $(this).hasClass('False') && $(this).find('input[type="checkbox"]:checked').length>0;
});
if (correctAnswers.length>0 && wrongAnswers.length<1) {
alert('found')
}
});
答案 1 :(得分:0)
这将分别检查每个复选框,因为您可以检查多个复选框并使用True类。
$(document).ready(function() {
$('.multiplesubmit').click(function() {
multipleChoiceCheck();
});
});
function multipleChoiceCheck() {
$(".multiplechoice_answergroup").find("input[type=checkbox]").each(function() {
var $this = $(this);
if($this.prop("checked") && $this.parent().hasClass("True")) {
alert($this.val());
}
});
}
我在复选框中添加了值以区分答案:
<button class="multiplesubmit">Check Answer</button>
<ul class="multiplechoice_answergroup">
<li class="multiplechoice_answer True"><input class="checkbox" type="checkbox" name="checkbox" value="Answer 1"> Answer 1</li>
<li class="multiplechoice_answer False"><input class="checkbox" type="checkbox" name="checkbox" value="Answer 2"> Answer 2</li>
<li class="multiplechoice_answer False"><input class="checkbox" type="checkbox" name="checkbox" value="Answer 3"> Answer 3</li>
<li class="multiplechoice_answer True"><input class="checkbox" type="checkbox" name="checkbox" value="Answer 4"> Answer 4</li>
</ul>
答案 2 :(得分:0)
试试这个:
我将所有错误的文本颜色更改为红色,将绿色更改为正确,但我留下了评论,以便您可以做任何您喜欢的错误和正确答案
$('.multiplesubmit').click(function() {
$.each('input:checkbox[name=checkme]', function(){
if( $(this).is(':checked'){
if( $(this).hasClass('True'){
// CHECKED - CORRECT
$(this).parent().css({ 'color' : 'green' });
}
else{
// CHECKED - INCORRECT
$(this).parent().css({ 'color' : 'red' });
}
}
else{
if( $(this).hasClass('True'){
// UN-CHECKED - INCORRECT
$(this).parent().css({ 'color' : 'red' });
}
else{
// UNCHECKED - CORRECT
$(this).parent().css({ 'color' : 'green' });
}
});
});