Descubra se o botão de rádio é verificado com jQuery?
Pergunta
Eu posso definir um botão de rádio para ser bem verificado, mas o que eu quero fazer é configurar uma espécie de 'ouvinte' que é ativado quando um determinado botão de rádio é verificado.
Tomemos, por exemplo, o seguinte código:
$("#element").click(function()
{
$('#radio_button').attr("checked", "checked");
});
Ele adiciona um atributo verificado e está tudo bem, mas como eu adicionaria um alerta. Por exemplo, isso aparece quando o botão de rádio é verificado sem a ajuda da função de clique?
Solução
$('#element').click(function() {
if($('#radio_button').is(':checked')) { alert("it's checked"); }
});
Outras dicas
Se você tiver um grupo de botões de rádio compartilhando o mesmo atributo de nome e, mediante envio ou algum evento, você deseja verificar se um desses botões de rádio foi verificado, você pode fazer isso simplesmente pelo código a seguir:
$(document).ready(function(){
$('#submit_button').click(function() {
if (!$("input[name='name']:checked").val()) {
alert('Nothing is checked!');
return false;
}
else {
alert('One of the radio buttons is checked!');
}
});
});
Como a solução de Parag deu um erro para mim, aqui está minha solução (combinando David Hedlund e Parag's):
if (!$("input[name='name']").is(':checked')) {
alert('Nothing is checked!');
}
else {
alert('One of the radio buttons is checked!');
}
Isso funcionou bem pra mim!
Você teria que vincular o evento de clique da caixa de seleção, pois o evento de mudança não funciona no IE.
$('#radio_button').click(function(){
// if ($(this).is(':checked')) alert('is checked');
alert('check-checky-check was changed');
});
Agora, quando você muda programaticamente o estado, você também deve acionar este evento:
$('#radio_button').attr("checked", "checked");
$('#radio_button').click();
// Verifique através da aula
if($("input:radio[class='className']").is(":checked")) {
//write your code
}
// verifique o nome
if($("input:radio[name='Name']").is(":checked")) {
//write your code
}
// verifique os dados
if($("input:radio[data-name='value']").is(":checked")) {
//write your code
}
Outra maneira é usar prop
(jQuery> = 1.6):
$("input[type=radio]").click(function () {
if($(this).prop("checked")) { alert("checked!"); }
});
A solução será simples, pois você só precisa de 'ouvintes' quando um determinado botão de rádio for verificado. Faça isso :-
if($('#yourRadioButtonId').is(':checked')){
// Do your listener's stuff here.
}
Se você não quiser uma função de clique, use a função de mudança de jQuery
$('#radio_button :checked').live('change',function(){
alert('Something is checked.');
});
Esta deve ser a resposta que você está procurando. Se você estiver usando a versão jQuery acima 1.9.1, tente usar como função ao vivo foi descontinuada.
... obrigado pessoal ... tudo que eu precisava era o 'valor' do botão de rádio verificado, onde cada botão de rádio no conjunto tinha um ID diferente ...
var user_cat = $("input[name='user_cat']:checked").val();
funciona para mim...
Trabalhando com todos os tipos de botões de rádio e navegadores
if($('#radio_button_id')[0].checked) {
alert("radiobutton checked")
}
else{
alert("not checked");
}
botão de rádio gerado dinâmico Verificação do rádio Get Value
$("input:radio[name=radiobuttonname:checked").val();
No botão de rádio dinâmico de mudança
$('input[name^="radioname"]').change(function () {if (this.value == 2) { }else{}});
$ ('. Radio-Button-Class-Name'). Is ('verificado') não funcionou para mim, mas o próximo código funcionou bem:
if(typeof $('.radio-button-class-name:checked').val() !== 'undefined'){
// radio button is checked
}
tente isso
if($('input[name="radiobutton"]:checked').length == 0) {
alert("Radio buttons are not checked");
}
Experimente isso:
alert($('#radiobutton')[0].checked)
O jQuery ainda é popular, mas se você não tiver dependências, veja abaixo. Função curta e clara para descobrir se o botão de rádio está verificado no ES-2015:
function getValueFromRadioButton( name ){
return [...document.getElementsByName(name)]
.reduce( (rez, btn) => (btn.checked ? btn.value : rez), null)
}
console.log( getValueFromRadioButton('payment') );
<div>
<input type="radio" name="payment" value="offline">
<input type="radio" name="payment" value="online">
<input type="radio" name="payment" value="part" checked>
<input type="radio" name="payment" value="free">
</div>
$("#radio_1").prop("checked", true);
Para versões do jQuery antes de 1.6, use:
$("#radio_1").attr('checked', 'checked');