Como verificar se um checkbox está checado? (c/ JavaScript ou jQuery)
Neste artigo você aprenderá como verificar se um checkbox está checado – tanto com JavaScript puro como também utilizando a lib jQuery.

Fala programador(a), tudo bem? Vamos aprender a como identificar que um checkbox está marcado com JavaScript!
Primeiramente gostaria de apresentar para vocês a forma que podemos utilizar para checar o checkbox com JavaScript puro
É preferencial optar por ela, para não precisar de uma dependência externa para verificar este input, deixando assim seu código mais leve e também mais performático
Vamos ao exemplo:
<input type="checkbox" id="termos_de_contrato"><label for="termos_de_contrato">Afirmo que li todo o contrato</label>
Este será nosso HTML de referência, agora veja o JavaScript:
let checkbox = document.getElementById('termos_de_contrato');
if(checkbox.checked) {
console.log("O cliente marcou o checkbox");
} else {
console.log("O cliente não marcou o checkbox");
}
Apenas com a propriedade checked conseguimos evidenciar se o input de checkbox está marcado ou não
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 45min
Viu como é simples? Por isso gosto sempre de verificar como fazer algo de forma nativa nas linguagens, e depois procurar soluções de libs externas
Vejamos agora no jQuery:
let checkbox = $('#termos_de_contrato');
if(checkbox.is(":checked")) {
console.log("O cliente marcou o checkbox");
} else {
console.log("O cliente não marcou o checkbox");
}
Note que o maior ganha é a seleção do elemento, porém no jQuery a forma de fazer esta checagem é através do método is
Conclusão
Neste artigo vimos como verificar se um checkbox está checado
Utilizamos duas formas, a primeira com Vanilla JavaScript, que é a mais indicada
E posteriormente utilizamos a forma com jQuery
Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube
checked é propriedade, não é o atributo do HTML:
Aqui mora a pegadinha que derruba muita gente
O checked que você escreve lá no HTML é só o valor INICIAL do input
Já o checkbox.checked do JavaScript é o estado de agora, aquele que o usuário acabou de mudar no clique
<input type="checkbox" id="newsletter" checked>
let checkbox = document.getElementById('newsletter')
console.log(checkbox.checked) // estado atual, muda conforme o usuário clica
console.log(checkbox.defaultChecked) // o que veio marcado no HTML
console.log(checkbox.getAttribute('checked')) // continua olhando pro HTML, não pro estado
Tome cuidado! Se tu ler o atributo no lugar da propriedade, o código funciona no primeiro carregamento e depois começa a te enganar em silêncio
Já me ferrei uma vez por causa disso 😅
Como saber na hora em que o checkbox é marcado? (evento change)
Verificar dentro do clique de um botão resolve
Mas na maioria das telas tu quer reagir NA HORA, tipo liberar o botão de continuar só quando o cara aceita o contrato
Pra isso a gente escuta o evento change
let checkbox = document.getElementById('termos_de_contrato')
let botao = document.getElementById('btn_continuar')
checkbox.addEventListener('change', function () {
botao.disabled = !checkbox.checked
})
Repara numa coisa massa: dentro do evento a leitura continua sendo a mesma de sempre, o checked
O evento só diz QUANDO olhar, quem responde se está marcado segue sendo a propriedade
Como verificar vários checkboxes de uma vez?
Esse é o caso mais comum de formulário: uma lista de opções com o mesmo name e você quer saber quais foram marcadas
<input type="checkbox" name="linguagens" value="js"> JavaScript
<input type="checkbox" name="linguagens" value="php"> PHP
<input type="checkbox" name="linguagens" value="python"> Python
Com JavaScript puro dá pra pedir direto só os marcados, usando o seletor :checked
let valores = Array.from(marcados).map(function (input) {
return input.value
})
console.log(valores)
E pra saber se PELO MENOS um foi marcado
No jQuery a ideia é a mesma, muda só a seleção
return this.value
}).get()
Se liga que aqui o value só faz sentido depois de confirmar o checked, um checkbox desmarcado continua tendo value
Como marcar ou desmarcar um checkbox por código?
A mesma propriedade que lê também escreve, beleza?
let checkbox = document.getElementById('termos_de_contrato')
checkbox.checked = true // marca
checkbox.checked = false // desmarca
checkbox.checked = !checkbox.checked // inverte o estado
E o clássico "marcar todos"
input.checked = true
})
Um detalhe que pega gente experiente: mexer no checked por código NÃO dispara o evento change
Então se tu tem uma lógica pendurada no change, chama ela na mão depois de marcar
is(‘:checked’) ou prop(‘checked’)?
No jQuery existe mais de um caminho pra mesma resposta
let checkbox = $('#termos_de_contrato')
checkbox.is(':checked') // true ou false
checkbox.prop('checked') // true ou false
Os dois leem o estado atual, o is responde pensando em seleção e o prop devolve a propriedade do elemento cru
Agora, se tu esbarrar num código antigo usando attr('checked'), desconfia
Vale o mesmo papo do JavaScript puro: atributo fala do HTML inicial, propriedade fala do que o usuário fez agora
Ainda vale usar jQuery só pra isso?
O critério que eu uso é simples
Se o projeto JÁ carrega jQuery, usa o is(':checked') e segue a vida, não tem crime nenhum
Agora, se o projeto não tem a lib, não vale a pena puxar uma dependência inteira pra ler um checked
Os seletores nativos (getElementById, querySelector, querySelectorAll) resolvem tudo que a gente viu aqui, incluindo o :checked em lista
É como chamar um caminhão pra levar uma caixa de sapato, funciona, mas não é o que você quer
Primeiro nativo, depois lib: essa ordem raramente decepciona =)
Perguntas frequentes:
Como verificar se um checkbox está marcado sem jQuery?
Pegue o elemento e leia a propriedade checked, ela devolve true quando está marcado e false quando não está
if (document.getElementById('termos_de_contrato').checked) {
console.log('marcado')
}
Por que meu checkbox.checked parece estar sempre errado?
Na maioria das vezes é porque o código está lendo getAttribute('checked') ou attr('checked'), que olham pro HTML inicial, e não pro estado atual do input
Como pegar o valor do checkbox marcado?
Confirme o checked primeiro e só depois leia o value, porque o value existe mesmo com o input desmarcado
Como saber se pelo menos um checkbox de um grupo foi marcado?
Selecione o grupo com :checked e confira o tamanho do resultado
Marcar o checkbox por código dispara o evento change?
Não, alterar checkbox.checked no JavaScript não dispara o change, a lógica que depende dele precisa ser chamada na mão
Leia também
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares
As diferenças de var, let e const

Como redirecionar para outra página com JavaScript
Exercícios de lógica de programação JavaScript com gabarito
Quais são os melhores exercícios lógica de programação JavaScript? Colocar em prática os exercícios de lógica de programação em JavaScript é de extrema importância para […]

Muito bom! Me ajudou.. Obrigado!!!
valeu Guilherme!
Não faltou o .value no final deste comando ? l
et checkbox = document.getElementById(‘termos_de_contrato’);
Creio que não, pois ele não está pegando o value do input, apenas quer saber se está marcado ou não.. O value não tem relevância neste exemplo.
Me corrijam se estiver errado, mas acho que é por isso…
salvou minha vida