jQuery:检查是否有任何单选按钮是';t检查
我指的是。尝试使用,但“我的”标记非常难看,我无法更改它jQuery:检查是否有任何单选按钮是';t检查,jquery,html,radio-button,Jquery,Html,Radio Button,我指的是。尝试使用,但“我的”标记非常难看,我无法更改它 <form method="post"> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <tr> <td style="padding-left:20px; padding-right:20px"> <table cellspacing="3" cellpaddin
<form method="post">
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td style="padding-left:20px; padding-right:20px">
<table cellspacing="3" cellpadding="2" border="0" width="100%">
<tr>
<td valign="top">1.</td>
<td valign="top" colspan="2">Question</td>
</tr>
<tr>
<td></td>
<td width="5"><input value="question1_yes" name="question1" id="question1_yes" type="radio" /></td>
<td><label for="question1_yes">Yes</label></td>
</tr>
<tr>
<td></td>
<td><input value="question1_no" name="question1" id="question1_no" type="radio" /></td>
<td><label for="question1_no">No</label></td>
</tr>
<tr>
<td></td>
<td><input value="question1_dont_know" name="question1" id="question1_dont_know" type="radio" /></td>
<td><label for="question1_dont_know">Don't know</label></td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="padding-left:20px; padding-right:20px">
<table cellspacing="3" cellpadding="2" border="0" width="100%">
<tr>
<td valign="top">2.</td>
<td valign="top" colspan="2">Question</td>
</tr>
<tr>
<td></td>
<td width="5"><input value="question2_yes" name="question2" id="question2_yes" type="radio" /></td>
<td><label for="question2_yes">Yes</label></td>
</tr>
<tr>
<td></td>
<td><input value="question2_no" name="question2" id="question2_no" type="radio" /></td>
<td><label for="question2_no">No</label></td>
</tr>
<tr>
<td></td>
<td><input value="question2_dont_know" name="question2" id="question2_dont_know" type="radio" /></td>
<td><label for="question2_dont_know">Don't know</label></td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="padding-left:20px; padding-right:20px">
<table cellspacing="3" cellpadding="2" border="0" width="100%">
<tr>
<td valign="top">3.</td>
<td valign="top" colspan="2">Question</td>
</tr>
<tr>
<td></td>
<td width="5"><input value="question3_yes" name="question1" id="question3_yes" type="radio" /></td>
<td><label for="question3_yes">Yes</label></td>
</tr>
<tr>
<td></td>
<td><input value="question3_no" name="question1" id="question3_no" type="radio" /></td>
<td><label for="question3_no">No</label></td>
</tr>
<tr>
<td></td>
<td><input value="question3_dont_know" name="question3" id="question1_dont_know" type="radio" /></td>
<td><label for="question3_dont_know">Don't know</label></td>
</tr>
</table>
</td>
</tr>
</table>
<input type="submit">
</form>
1.
问题
对
不
不知道
2.
问题
对
不
不知道
3.
问题
对
不
不知道
如何更改?如果您的标记是固定的,并且考虑到每个问题都嵌套在一个表中,您只需检查选中输入的数量,并将其与您拥有的表(在主表中)的数量进行比较,如下所示:
$('form').on('submit',function(e){
// Counting number of questions
arrayQuestions = new Array();
$('input[type=radio').each(function(){
arrayQuestions.push(this.name);
});
jQuery.unique( arrayQuestions );
nbQuestion = arrayQuestions.length;
nbAnsweredQuestion = $('input[type=radio]:checked').length;
if(nbAnsweredQuestion < nbQuestion) {
alert('You must answer every question');
e.preventDefault();
}
});
$('form')。关于('submit',函数(e){
//计算问题数量
arrayQuestions=新数组();
$('input[type=radio')。每个(函数(){
arrayQuestions.push(此名称);
});
jQuery.unique(arrayQuestions);
nbQuestion=arrayQuestions.length;
nbAnsweredQuestion=$('input[type=radio]:checked')。长度;
如果(nbAnsweredQuestion
看到小提琴了吗
编辑
请注意,在您的第三个问题中,第一个答案的两个名称为“问题1”,可能是打字错误
EDIT2
添加jQuery.unique以改进问题计数(因此它不再基于表)如果您试图确保所有单选按钮至少有一个值,我会这样做:
var radio_names = ['question1','question2'];
var form_data = $('form').serializeArray();//Use a better selector by using an ID?
$.each(form_data,function(index,input){
var radio_index = radio_names.indexOf(input.name)
if(radio_index>-1 && input.value!='')//If it is a radio we monitor, and not empty of value
radio_names.splice(radio_index, 1);//Remove it from the list, so we know which we are missing
});
if(radio_names.length>0)//We did not fill all radio, display list of unfilled ones
alert(radio_names);
现在用英文:
我们列出要监视的收音机,将表单序列化为一个数组,以便更容易使用。循环数组以检查其中的输入并删除找到的收音机。完成后,我们应该留下一个空的收音机列表…如果没有,大声警告用户。检查此演示
我在第三个问题中有正确的名字问题3(是问题1)
我有insert类来查找表(on table class=“table”)和问题(class=“question”)
拨弄
谢谢。不幸的是,还有一些其他表格包含不同的内容。是的,这是一个打字错误。对不起,您可以通过向问题包装器添加一个类来替换表格计数,它会起作用:)我用不同的方式编辑了小提琴,没有修改标记,只使用jQuery.unique来获取问题的数量,哈I’我看起来很棒。非常感谢!非常有魅力。非常感谢!只剩下一件事:如何将序号添加到问题中?您可以将另一个类添加到数字中,然后使用$(“.noQuestion”)重试。否则,文本将更新此行未回答。推送($(question.prev().text()+question.text());我已更新了小提琴
<form method="post">
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td style="padding-left:20px; padding-right:20px">
<table cellspacing="3" cellpadding="2" border="0" width="100%" class="table">
<tr>
<td valign="top">1.</td>
<td valign="top" class="question" colspan="2">Question</td>
</tr>
<tr>
<td></td>
<td width="5"><input value="question1_yes" name="question1" id="question1_yes" type="radio" /></td>
<td><label for="question1_yes">Yes</label></td>
</tr>
<tr>
<td></td>
<td><input value="question1_no" name="question1" id="question1_no" type="radio" /></td>
<td><label for="question1_no">No</label></td>
</tr>
<tr>
<td></td>
<td><input value="question1_dont_know" name="question1" id="question1_dont_know" type="radio" /></td>
<td><label for="question1_dont_know">Don't know</label></td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="padding-left:20px; padding-right:20px">
<table cellspacing="3" cellpadding="2" border="0" width="100%" class="table">
<tr>
<td valign="top">2.</td>
<td valign="top" class="question" colspan="2">Question</td>
</tr>
<tr>
<td></td>
<td width="5"><input value="question2_yes" name="question2" id="question2_yes" type="radio" /></td>
<td><label for="question2_yes">Yes</label></td>
</tr>
<tr>
<td></td>
<td><input value="question2_no" name="question2" id="question2_no" type="radio" /></td>
<td><label for="question2_no">No</label></td>
</tr>
<tr>
<td></td>
<td><input value="question2_dont_know" name="question2" id="question2_dont_know" type="radio" /></td>
<td><label for="question2_dont_know">Don't know</label></td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="padding-left:20px; padding-right:20px">
<table cellspacing="3" cellpadding="2" border="0" width="100%" class="table">
<tr>
<td valign="top">3.</td>
<td valign="top" class="question" colspan="2">Question</td>
</tr>
<tr>
<td></td>
<td width="5"><input value="question3_yes" name="question3" id="question3_yes" type="radio" /></td>
<td><label for="question3_yes">Yes</label></td>
</tr>
<tr>
<td></td>
<td><input value="question3_no" name="question3" id="question3_no" type="radio" /></td>
<td><label for="question3_no">No</label></td>
</tr>
<tr>
<td></td>
<td><input value="question3_dont_know" name="question3" id="question1_dont_know" type="radio" /></td>
<td><label for="question3_dont_know">Don't know</label></td>
</tr>
</table>
</td>
</tr>
</table>
<input type="submit">
</form>
$(document).on('submit', 'form', function () {
var validate = true;
var unanswered = new Array();
// Loop through available sets
$('.table').each(function () {
// Question text
var question = $(this).find(".question");
// Validate
if (!$(this).find('input').is(':checked')) {
// Didn't validate ... dispaly alert or do something
unanswered.push(question.text());
question.css('color', 'red'); // Highlight unanswered question
validate = false;
}
});
if (unanswered.length > 0) {
msg = "Please answer the following questions:\n" + unanswered.join('\n');
alert(msg);
}
return validate;
});