全部, 我有以下代码来检查我的所有单选按钮组是否都已选中:
jQuery("input[type=radio]").click(function(event){
var num_questions = jQuery("#num_questions").val(),
new_questions = parseInt(num_questions, 10) + 1,
radios = jQuery("input[type=radio]"),
all_answered = true;
for(var i=1; i<new_questions; i++){
alert(i);
var group = radios.filter('[name=rating_value_'+i+']');
alert(group.filter(":checked").length);
if(group.filter(":checked").length==0){
all_answered = false;
break;
}
}
if (all_answered) {
// a group was found that didn't have an answer selected
// so do something
jQuery("#no_answers").html('');
}
});
这样可以很方便地进行检查,但我有一个问题。此代码在实际的单选按钮被标记为已单击之前运行,因此它认为仍有一个未被单击,即使这是最后一个。我怎样才能解决这个问题,以便它能够像我一样对待它?
答案 0 :(得分:2)
尝试使用change
代替click
这应该确保在实际选择选项后执行。
点击不起作用的原因是您在调用默认点击事件之前执行检查,默认点击事件将是选择实际单选按钮的事件。看来我可能这是错的。但是,改变应该仍然有效。
答案 1 :(得分:2)
我觉得我正在服用疯狂的药片,因为我能够通过点击让它变得有效。这是我的代码:
$("input[type=radio]").click(function(event) {
var all_answered = true;
$('input:radio').each(function() {
if (!$('input[name="' + $(this).attr("name") + '"]').is(':checked')) {
all_answered = false;
}
});
alert(all_answered);
});
这是我的小提琴,显示它在行动:http://jsfiddle.net/F8kAH/5/