2012-05-22 42 views
4

我想通過使用jQuery的多個(動態)單選按鈕組循環,並且如果任何沒有做出選擇,它會拋出錯誤並停止表單提交。jQuery - 確保所有無線電組都被檢查

這裏是我的努力迄今:

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

總是忽略if語句將停止提交,彷彿也許$(這)是不實際的單選按鈕的價值?

這裏有一個的jsfiddle:http://jsfiddle.net/aVVW9/

任何幫助將不勝感激,謝謝!

回答

8

試試這個。該方法是循環遍歷所有單選按鈕,然後使用: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/

+0

非常感謝,這是非常棒的,只有在沒有任何檢查時才顯示警報,但有沒有辦法通過刪除名稱來簡化代碼,還有返回false;在警報下實際上並不會停止表單提交:( – Nick

+2

當然,您可以將警報消息更改爲任何您喜歡的任何內容。您可能還想向收音機組的標籤添加一個「錯誤」類,以突出顯示需要檢查的按鈕:http://jsfiddle.net/mblase75/aVVW9/6/ – Blazemonger

+0

啊,非常感謝編輯 - 這是完美的:D – Nick

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; 
    } 
}); 

入住這demo。這裏爲了簡單起見,我將每個無線電組包裝在具有類radio_group的div中並循環播放它們。

+0

謝謝,但這總是返回false,我想知道是否因爲組中沒有選中的單選按鈕? – Nick

+1

@Nick檢查我的更新 – thecodeparadox

+0

謝謝,但同樣的(我在!!中添加!,並嘗試第二個代碼也:() – Nick

0

我不小心把剛剛找到更完美的解決方案!只有當您知道單選按鈕的確切數量時纔有用。

var x = 0; 

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

if (x == count) { 

//do smth 

} 

}); 
相關問題