1

我有一个烦人的单选按钮问题/答案列表

你喜欢A还是B
你喜欢x还是y

这类问题。

标记看起来有点像:

<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 执行此操作的好策略是什么?

4

4 回答 4

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>
于 2012-04-17T19:51:53.800 回答
1

您应该能够使用 jQuery 验证插件,正如这个问题中所建议的那样:

使用 jQuery 验证插件验证单选按钮组

以下是验证插件文档:http ://docs.jquery.com/Plugins/Validation/Methods

于 2012-04-17T19:48:49.550 回答
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;
}

这不是非常有效,但我认为它会起作用

于 2012-04-17T19:49:14.650 回答
0

假设您的所有问题只有两个选项,这是一种快速的方法。将选中的单选按钮的数量与单选按钮的总数进行比较。如果选中框的数量不等于总数的一半,则说明未选中某些内容。

if( $('input[type=radio]:checked').length) == $('input[type=radio]').length/2) ...​​​​​​​​​​​​​​​​​​​
于 2012-04-17T20:01:36.907 回答