我正在做一些测验,它有很多radio button
组。像1个问题= 1个带有多个radio buttons
的radiobutton组。用户必须检查每个组中的一个radio button
。我决定给每组radiobuttons它自己的类,而不是使用循环来检查这些组。出于某种原因 - 代码不起作用。这是代码:
var num = 1;
$("#submit_button").click(function() {
var alarm = 0;
$(".input_value" + num).each(function(){
if(!$(this).is(':checked')) {
alarm = 1;
} else {
num++;
}
});
if(alarm == 1) {
$("#failure").show(200);
$("#failure").fadeOut(2500);
} else {
$("#success").show(200);
$("#success").fadeOut(2500);
}
});
#success {
display: none;
margin-top: 50px
}
#failure {
display: none;
margin-top: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section>
<div class="rate_input">
<label><input type="radio" class="input_value input_value1" name="q1" value=1>1</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=2>2</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=3>3</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=4>4</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=5>5</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=6>6</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=7>7</label>
</div>
</section>
<section>
<div class="rate_input">
<label><input type="radio" class="input_value input_value2" name="q2" value=1>1</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=2>2</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=3>3</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=4>4</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=5>5</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=6>6</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=7>7</label>
</div>
</section>
<section>
<div class="rate_input">
<label><input type="radio" class="input_value input_value3" name="q3" value=1>1</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=2>2</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=3>3</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=4>4</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=5>5</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=6>6</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=7>7</label>
</div>
</section>
<section id="success">
<p>Great! Thank you!</p>
</section>
<section id="failure">
<p>You have to select at least 1 radiobutton in each group!</p>
</section>
<section id="submit">
<input type="submit" name="submit" id="submit_button" value="Send!">
</section>
jsFiddle
:https://jsfiddle.net/k3Luw4hx/
答案 0 :(得分:0)
您的逻辑似乎有错误。检查某些内容时,您需要突破循环。也就是说,当您找到第一个“已回答”的问题时,您需要突破该问题并继续。但是,如果您没有找到该问题的答案 - 只有这样才能设置警报标志。在您的代码中,它将循环所有匹配的元素,并在找到任何未选中的选项时设置alarm = 1
。
修改强>
我在这里对这个逻辑问题做了一个非常不优雅的解决方案:https://jsfiddle.net/9r7t3rgc/8/问题的核心是你需要循环每个问题并决定它是否有答案。您提供的代码不会这样做。
另外,使用.prop检查元素的已检查状态。
$(".input_value" + num).each(function(){
if(!$(this).prop('checked')) {
alarm = 1;
} else {
num++;
}
})
答案 1 :(得分:0)
主要问题是您检查每个单选按钮是否代码失败。您应该检查班级.input_value1
.input_value2
.input_value3
,而不是该班级的每个按钮。
var num = 1;
$("#submit_button").click(function() {
var total_cb = $(".rate_input").length;
var alarm = 0;
for(var key=1;key<=total_cb;key++) {
if (!$('.input_value'+key).is(':checked')) {
alarm = 1;
}
}
if (alarm == 1) {
$("#failure").show(200);
$("#failure").fadeOut(2500);
} else {
$("#success").show(200);
$("#success").fadeOut(2500);
}
});
&#13;
#success {
display: none;
margin-top: 50px
}
#failure {
display: none;
margin-top: 50px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section>
<div class="rate_input">
<label><input type="radio" class="input_value input_value1" name="q1" value=1>1</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=2>2</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=3>3</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=4>4</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=5>5</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=6>6</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=7>7</label>
</div>
</section>
<section>
<div class="rate_input">
<label><input type="radio" class="input_value input_value2" name="q2" value=1>1</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=2>2</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=3>3</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=4>4</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=5>5</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=6>6</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=7>7</label>
</div>
</section>
<section>
<div class="rate_input">
<label><input type="radio" class="input_value input_value3" name="q3" value=1>1</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=2>2</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=3>3</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=4>4</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=5>5</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=6>6</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=7>7</label>
</div>
</section>
<section id="success">
<p>Great! Thank you!</p>
</section>
<section id="failure">
<p>You have to select at least 1 radiobutton in each group!</p>
</section>
<section id="submit">
<input type="submit" name="submit" id="submit_button" value="Send!">
</section>
&#13;
答案 2 :(得分:0)
您可以使用解决方案https://jsfiddle.net/1pycve38/2/
var num = 1;
$("#submit_button").click(function() {
var alarm = [];
$('.rate_input').each(function(i){
alarm[i] = 0;
$(this).find("input.input_value").each(function(){
if($(this).is(':checked')) {
alarm[i] = 1;
}
});
});
if(alarm.indexOf(0) >= 0) {
$("#failure").show(200);
$("#failure").fadeOut(2500);
} else {
$("#success").show(200);
$("#success").fadeOut(2500);
}
});
&#13;
#success {
display: none;
margin-top: 50px
}
#failure {
display: none;
margin-top: 50px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section>
<div class="rate_input">
<label><input type="radio" class="input_value input_value1" name="q1" value=1>1</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=2>2</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=3>3</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=4>4</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=5>5</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=6>6</label>
<label><input type="radio" class="input_value input_value1" name="q1" value=7>7</label>
</div>
</section>
<section>
<div class="rate_input">
<label><input type="radio" class="input_value input_value2" name="q2" value=1>1</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=2>2</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=3>3</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=4>4</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=5>5</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=6>6</label>
<label><input type="radio" class="input_value input_value2" name="q2" value=7>7</label>
</div>
</section>
<section>
<div class="rate_input">
<label><input type="radio" class="input_value input_value3" name="q3" value=1>1</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=2>2</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=3>3</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=4>4</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=5>5</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=6>6</label>
<label><input type="radio" class="input_value input_value3" name="q3" value=7>7</label>
</div>
</section>
<section id="success">
<p>Great! Thank you!</p>
</section>
<section id="failure">
<p>You have to select at least 1 radiobutton in each group!</p>
</section>
<section id="submit">
<input type="submit" name="submit" id="submit_button" value="Send!">
</section>
&#13;
循环. rate_input
然后在输入中循环。
警报是array
,如果选中了答案,那么值将为1,否则为0。
希望这会对你有所帮助。