Dans jQuery, j’aimerais sélectionner tous les groupes de boutons radio où aucun bouton n’est coché.
Ou bien, y a-t-il un moyen de sélectionner tous les groupes de boutons radio et de parcourir les groupes?
J’ajoute dynamicment N groupes de boutons radio à une page et je ne saurai pas à l’avance quels seront les noms des groupes de boutons.
Pour trouver tous les groupes de radio:
var radio_groups = {} $(":radio").each(function(){ radio_groups[this.name] = true; })
pour trouver quel groupe de radio a coché des cases et qui ne l’a pas:
for(group in radio_groups){ if_checked = !!$(":radio[name='"+group+"']:checked").length alert(group+(if_checked?' has checked radios':' does not have checked radios')) }
Prise en charge de plusieurs groupes et pré-vérifié.
$('input').click(function() { var $t = $(event.target); if ($t.hasClass('checked')) $t.removeAttr('checked'); else $('input[type="radio"][name="' + $t.prop('name') + '"]').not($t).removeClass('checked'); $t.toggleClass('checked'); }).filter(':checked').addClass('checked');
“ `
Preuve: http://jsfiddle.net/abrkn/PGW2Z/
Pour sélectionner toutes les radios par nom de groupe et obtenir uniquement la liste des noms différents:
function selectRadioByGroupName() { return $.unique($('input:radio').map(function(index, element) { return this.name; })); }
Un exemple d’extrait de code:
function selectRadioByGroupName() { return $.unique($('input:radio').map(function(index, element) { return this.name; })); } $(function () { selectRadioByGroupName().each(function(index, element) { $('body').append($('First Group name is: ' + element + '
')); }); });