确保所有单选按钮都使用jQuery具有值

时间:2012-04-17 19:38:48

标签: jquery

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

  你喜欢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做这个的好策略是什么?

4 个答案:

答案 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

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

答案 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) ...​​​​​​​​​​​​​​​​​​​