6

jQuery を使用して複数の (動的) ラジオ ボタン グループをループしたいのですが、選択されていないものがあると、エラーが発生し、フォームの送信が停止します。

これまでの私の努力は次のとおりです。

$("form").submit(function() {
    $(":radio").each(function(){
        if($(this).val().length == 0) {
            alert('Not selected all radios');
            return false;
        }
    }); 
});

しかし、$(this) が実際にはラジオ ボタンの値ではないかのように、送信を停止する if ステートメントは常に無視されます。

ここに jsFiddle があります: http://jsfiddle.net/aVVW9/

どんな助けでも大歓迎です、ありがとう!

4

3 に答える 3

10

これを試して。アプローチは、すべてのラジオ ボタンをループし、ラジオ ボタン グループの名前を抽出して、:checkedそのグループのいずれかのメンバーがチェックされているかどうかを確認することです。単純なブール値は、最初の欠落チェックが見つかった後にエラーを停止します。

$("form").submit(function() {
    var submitme = true;
    $(':radio').each(function() { // loop through each radio button
        nam = $(this).attr('name'); // get the name of its set
        if (submitme && !$(':radio[name="'+nam+'"]:checked').length) { 
        // see if any button in the set is checked
            alert(nam+' group not checked');
            submitme = false;
        }
    });
    return submitme; // cancel the form submit
});        ​

http://jsfiddle.net/mblase75/aVVW9/5/

于 2012-05-22T17:48:42.340 に答える
1
$("form").submit(function() {
    $(":radio", this).each(function(){
        if(!this.checked) {
            alert('Not selected all radios');
            return false;
        }
    }); 
});

また

$("form").submit(function() {
    if($(':radio:not(:checked)', this).length) {
       alert('Not selected all radios');
       return false;
    }
});

このデモを確認してください。ここでは簡単にするために、クラスを持つ div 内で各ラジオ グループをラップradio_groupし、それらをループします。

于 2012-05-22T17:21:59.743 に答える
0

偶然、さらにエレガントなソリューションを見つけました! ラジオ ボタンの正確な数がわかっている場合にのみ役立ちます。

var x = 0;

$(":radio").change(function() {
x = x + 1;

if (x == count) {

//do smth

}

});
于 2013-08-10T09:24:50.020 に答える