我有一个包含 3 个问题的表格,每个问题有 3 个单选选项。如果有任何问题留空,我希望表单发送警报。仅当所有问题都留空时,此代码才会发送警报:
if (!$("input").is(':checked')) {
alert("You left one blank!");
}
因此,例如,如果我只回答了一个问题,我希望发送警报。相反,它继续使用代码。
我有一个包含 3 个问题的表格,每个问题有 3 个单选选项。如果有任何问题留空,我希望表单发送警报。仅当所有问题都留空时,此代码才会发送警报:
if (!$("input").is(':checked')) {
alert("You left one blank!");
}
因此,例如,如果我只回答了一个问题,我希望发送警报。相反,它继续使用代码。
您有 3 个无线电组,因此将有 3 个选中的输入和 6 个未选中的输入,我建议:
if ( $("input[type=radio]:checked").length < 3 ) {
alert('Please answer all of the questions');
}
试试这个:
$(document).ready(function () {
$("#btn1").on("click", function () {
var count = 0;
var questions = $("div.question");
questions.each(function () {
if ($(this).find("input").filter('[type="radio"]').filter(":checked").length > 0) {
count++;
}
});
if (count >= questions.length) {
alert("all good");
} else {
alert("something not checked");
}
});
});
使用 HTML:
<div class="question">
Question 1:
<input type="radio" name="radio1" />
<input type="radio" name="radio1" />
<input type="radio" name="radio1" />
</div>
<div class="question">
Question 2:
<input type="radio" name="radio2" />
<input type="radio" name="radio2" />
<input type="radio" name="radio2" />
</div>
<div class="question">
Question 3:
<input type="radio" name="radio3" />
<input type="radio" name="radio3" />
<input type="radio" name="radio3" />
</div>
<div>
<input type="button" id="btn1" value="Submit" />
</div>
您可以更改if (count >= questions.length) {
为,===
而不是>=
确保为每个问题选择了 1 个单选按钮。否则,这允许选择多个单选按钮(当它们按name
属性分组时,这并不完全可能)......但只是想指出这一点。
<form>
<input type="radio" name="facepunch" class="facepunch" value="1" />
<input type="radio" name="facepunch" class="facepunch" value="2" />
<input type="radio" name="facepunch" class="facepunch" value="3" />
<br />
<input type="radio" name="stack" class="stack" value="1" />
<input type="radio" name="stack" class="stack" value="2" />
<input type="radio" name="stack" class="stack" value="3" />
<br />
<input id="button" type="button">
</form>
$(document).ready(function(){
$('#button').click(function(){
if(!$("input.facepunch:checked").val()) {
alert("Please select facepunch");
}
if(!$("input.stack:checked").val()) {
alert("Please select stack");
}
});
});
如果您只有几组无线电,您可以使用此方法,这是验证用户数据的一种方法。
我建议您查看其中一个很棒的 jQuery 验证插件: jzaefferer 插件,bassistance 插件
另外,请确保您也在服务器端验证它!用户可以从其他地方向您的服务器发送请求,甚至可以在他的浏览器上禁用 javascript
您可以遍历所有单选按钮,看看是否有任何未选中:
$('input[type="radio"]').each(function () {
if( ! $(this).is(':checked') ) {
alert('You left one blank!');
return false; //exit function, so alert won't show multiple times
}
});