2009-07-22 3 views
15

В jQuery я хотел бы выбрать все группы переключателей, в которых нет кнопок.Группы jQuery и радиокнопки

Или есть способ, которым я могу выбрать все группы переключателей и перебирать группы?

Я динамически добавляю группы радиокнопки N на страницу и не буду знать, какими будут названия групп переключателей.

+0

Можете ли вы поместить образец html? –

ответ

34

Чтобы найти все группы радио:

var radio_groups = {} 
$(":radio").each(function(){ 
    radio_groups[this.name] = true; 
}) 

, чтобы узнать, какие радио группа проверила радио коробки и который не имеет:

for(group in radio_groups){ 
    if_checked = !!$(":radio[name='"+group+"']:checked").length 
    alert(group+(if_checked?' has checked radios':' does not have checked radios')) 
} 
+2

какой !! стоять и почему? –

+0

[Duble NOT, он преобразует логическое значение два раза подряд, поэтому '!! true = true'] (http://stackoverflow.com/questions/1406604/what-does-the-operator-double-exclamation-point- mean-in-javascript/1406618 # 1406618) –

+0

Я знаю, что это уже давно, но это очень помогло мне! Мне просто нужен простой способ обеспечить, чтобы каждая из групп переключателей была выбрана, и вот она. – LittleTreeX

0

Поддержка нескольких групп и предварительно проверены.

$('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');​ 

`` `

Доказательство: http://jsfiddle.net/abrkn/PGW2Z/

0

Чтобы выбрать все радио по имени группы и получить только список различных имен:

function selectRadioByGroupName() { 
     return $.unique($('input:radio').map(function(index, element) { 
      return this.name; 
     })); 
    } 

Пример сниппет:

function selectRadioByGroupName() { 
 
    return $.unique($('input:radio').map(function(index, element) { 
 
    return this.name; 
 
    })); 
 
} 
 

 

 

 
$(function() { 
 
    selectRadioByGroupName().each(function(index, element) { 
 
    $('body').append($('<p>First Group name is: ' + element + '</p>')); 
 
    }); 
 
});
<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script> 
 

 
<form action=""> 
 
    <p> 
 
     Q1: 
 
    </p> 
 
    <input type="radio" name="gender" value="male"> Male<br> 
 
    <input type="radio" name="gender" value="female"> Female<br> 
 
    <input type="radio" name="gender" value="other"> Other 
 
    <br /> 
 
    <p> 
 
     Q2: 
 
    </p> 
 
    <input type="radio" name="status" value="male"> Single<br> 
 
    <input type="radio" name="status" value="female"> Married<br> 
 
    <input type="radio" name="status" value="other"> Other 
 
    <br /> 
 
    <input type="button" name="submit_id" value="Submit" onclick="submitAnswers()"> 
 
</form>

После получения разных названий групп их можно циклически перемещать.