0

自分のフォームでラジオ選択が行われていないかどうかを確認するのに苦労しています。私のフォームには 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.")
                }
            }
        );
    }
);

5 つの項目すべてがチェックされていない場合は、「1 2 3 4 5 未チェック」という正しいメッセージが警告されますが、1 つの項目だけをチェックすると、「すべての項目がチェックされています」というメッセージが表示されます。警告されます。誰でもこれで私を助けることができますか?ありがとう。

4

3 に答える 3

2

あなたが書いた場所

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

代わりに試す

if (!$("input[name='"+radio_name+"']:checked").val()) {
    error += radio_name + " ";
}
于 2012-04-27T13:52:01.033 に答える
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.")
            }
        });
});

;)

于 2012-04-27T13:54:28.850 に答える
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.")
        }
   });
});​

フィドル

于 2012-04-27T14:03:07.300 に答える