我有一个令人烦恼的单选按钮问题/答案列表
你喜欢A或B吗? 你喜欢x还是y
这类问题。
Markup看起来有点像:
<input type="radio" name="User[AnnoyingQuestion][1]" value="1|Do you like x or y?|X" id="Member[PartyProfile]_1_0" />
<input type="radio" name="User[AnnoyingQuestion][1]" value="1|Do you like x or y?|Y" id="Member[PartyProfile]_1_1" class="elp-radio-question">
基本上,我需要确保所有问题都已得到解答。 用jQuery做这个的好策略是什么?
答案 0 :(得分:4)
证明:http://jsfiddle.net/iambriansreed/vXXUV/
将表单选择器设置为更精确。
<script>
$(function(){
$('form').submit(function(e){
var radios = {}, success = true;
$('input[type="radio"]').each(function(){
var name = $(this).attr('name');
if(name in radios) return true;
radios[name] = $('input[name="'+name+'"]:checked').length > 0;
});
for(name in radios){
if(!radios[name]){
success = false;
alert('Please enter a value for '+name);
}
}
if(!success) e.preventDefault();
else alert('Form Submitting...');
});
});
</script>
答案 1 :(得分:1)
您应该能够使用jQuery验证插件,如本问题所述:
Validation of radio button group using jQuery validation plugin
答案 2 :(得分:1)
更新。试试这个
function allChecked() {
var $inputs = $('input[type="radio"]');
$.each($inputs,function(){
var $this = $(this),
name = $this.attr('name');
if ($('input[name="' + name +'"]:checked').length < 1){
return false;
}
});
return true;
}
这不是非常有效,但我认为它会起作用
答案 3 :(得分:0)
这是一个快速的方法,假设您的所有问题只有两个选项。将选中的单选按钮数与单选按钮的总数进行比较。如果复选框的数量不等于总数的一半,则不检查某些内容。
if( $('input[type=radio]:checked').length) == $('input[type=radio]').length/2) ...