检查是否进行了无线电选择

时间:2012-04-27 13:48:41

标签: javascript jquery

我无法检查我的表单中是否有无线电选择。在我的表单中,我有5个项目,每个项目有2个选项(单选按钮)。像这样:

item 1    opt1   opt2   (name attribute is "1")
item 2    opt1   opt2   (name attribute is "2")
item 3    opt1   opt2
item 4    opt1   opt2
item 5    opt1   opt2

我已经为所有输入单选按钮提供了与动态生成项目相同的类名,因此输入的name属性也是如此。这是我检查每个项目的代码:

$(document).ready(
    function(){
        $('#submit').click(function(){
                var buttons = document.getElementsByClassName('radio_class');
                var radio_num = buttons.length; //which returns 10 in this case
                var error = "";
                for (var i=0; i<radio_num; i=i+2){
                    var radio_name = buttons[i].getAttribute("name");
                    if (!$("input[@name=radio_name]:checked").val()) {
                        error += radio_name + " ";
                    }
                }
                if (error !== "") {
                    alert (error+"not checked!");
                    return false;
                }
                else {
                    alert ("All the items have been checked.")
                }
            }
        );
    }
);

如果未检查所有五个项目,则会提示“1 2 3 4 5未检查”的正确消息,但是,如果我只检查一个项目,则会显示消息“已检查所有项目”。会被警告。谁能帮我这个?感谢。

3 个答案:

答案 0 :(得分:2)

你写的地方

if (!$("input[@name=radio_name]:checked").val()) {
    error += radio_name + " ";
}

尝试改为

if (!$("input[name='"+radio_name+"']:checked").val()) {
    error += radio_name + " ";
}

答案 1 :(得分:1)

我认为这可以解决您的问题:

$(document).ready(function(){
    $('#submit').click(function(){
            var buttons = $('.radio_class');
            var radio_num = buttons.length;
            var error = "";
            $.each(buttons, function(index, val){
                var radio_name = $(this).attr("name");
                if( !$('[name="'+radio_name+'"]:checked').val() )
                    error += radio_name + " ";
            });

            if (error !== "")
            {
                alert (error+"not checked!");
                return false;
            }
            else {
                alert ("All the items have been checked.")
            }
        });
});

答案 2 :(得分:0)

$(document).ready(function(){
    $('#submit').click(function(){
        var error = "";
        $('.radio_class').each(function() {
            if (!$(this).is(':checked')) {
                error += $(this).attr('name') + " ";
            }
        });
        if (error != "") {
            alert (error+"not checked!");
            return false;
        }else {
            alert ("All the items have been checked.")
        }
   });
});​

FIDDLE