seleccionado - jQuery y grupos de botones de radio
saber si un radiobutton esta seleccionado jquery (3)
Para encontrar todos los grupos de radio:
var radio_groups = {}
$(":radio").each(function(){
radio_groups[this.name] = true;
})
para encontrar qué grupo de radio ha marcado las casillas de radio y cuál no:
for(group in radio_groups){
if_checked = !!$(":radio[name=''"+group+"'']:checked").length
alert(group+(if_checked?'' has checked radios'':'' does not have checked radios''))
}
En jQuery, me gustaría seleccionar todos los grupos de botones de radio donde no hay botones marcados.
O, ¿hay alguna forma en la que pueda seleccionar todos los grupos de botones de opción e iterar a través de los grupos?
Estoy agregando dinámicamente N grupos de botones de radio a una página y no sabré, de antemano, cuáles serán los nombres de los grupos de botones de radio.
Para seleccionar todas las radios por nombre de grupo y obtener solo la lista de nombres diferentes:
function selectRadioByGroupName() {
return $.unique($(''input:radio'').map(function(index, element) {
return this.name;
}));
}
Un fragmento de ejemplo:
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>
Después de obtener los diferentes nombres de grupo es posible completar un ciclo en ellos.
Soporte para múltiples grupos y pre-chequeado.
$(''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'');
`` `
Prueba: http://jsfiddle.net/abrkn/PGW2Z/