Eu sei como ver se uma caixa de seleção individual está marcada ou não.
Mas estou tendo problemas com o seguinte - dado um ID de formulário, preciso ver se alguma das caixas de seleção está marcada (ou seja, 1 ou mais) e preciso verificar se nenhuma está selecionada. Basicamente, preciso de duas funções separadas que respondam a essas duas perguntas. Ajuda seria apreciada. Obrigado!
Na verdade, eu precisaria apenas de uma função para me dizer se nenhuma está selecionada. Saber isso responderia à outra pergunta.
javascript
jquery
forms
bba
fonte
fonte
Respostas:
Você pode usar algo como isto
fonte
$("#formID input:checkbox:checked").length
seria suficiente aqui tambémif ($("#formID input:checkbox:checked").length){}
(sem a>0
) seria suficiente porque 0 é um valor Falsey, consulte james.padolsey.com/javascript/truthy-falsey:checkbox
seletor:For better performance in modern browsers, use [type="checkbox"]
consulte api.jquery.com/checkbox-selector - o mesmo para botões de opção deuse [type="radio"] rather than :radio
rádioO JQuery
.is
testará todos os elementos especificados e retornará true se pelo menos um deles corresponder ao seletor:fonte
is()
parecer funcionar, ter:checked
diretamente no seletor, conforme indicado na resposta de @ rahul, parece mais apropriado. is () parece mais útil quando "dentro de retornos de chamada", consulte api.jquery.com/is . Ou eu estou esquecendo de alguma coisa?.is(":checked")
sua solução é mais expressiva, embora não tenha certeza do resto.$("form input[type=checkbox]").is(":checked")
pode ser uma abordagem mais simples e genérica.is
pode ter um desempenho melhor, porque para assim que encontra um.Você consegue fazer isso:
Onde:
:checkbox
O seletor de filtro seleciona todas as caixas de seleção.:checked
selecionará caixas de seleção marcadaslength
dará o número de marcados láfonte
:checkbox
seletor :,For better performance in modern browsers, use [type="checkbox"]
consulte api.jquery.com/checkbox-selectorIsto é o que eu usei para verificar se alguma caixa de seleção em uma lista de caixas de seleção foi alterada:
fonte
Sem usar 'length', você pode fazer assim:
fonte
Você pode fazer um retorno simples do
.length
aqui:Ele procura por caixas de seleção no formulário fornecido, vê se existem
:checked
e retornatrue
se forem (já que o comprimento seria 0 caso contrário). Para deixar um pouco mais claro, aqui está a versão convertida não booleana:Isso retornaria uma contagem de quantos foram verificados.
fonte
A resposta de Rahul é mais adequada para sua pergunta. De qualquer forma, se você tiver um grupo de caixas de seleção a serem verificadas e nem todas as caixas de seleção em seu formulário, poderá fazê-lo.
Coloque um nome de classe para todas as caixas de seleção que deseja marcar, digamos, por exemplo, um nome de classe
test_check
e agora você pode verificar se alguma das caixas de seleção está marcada pertencendo ao grupo:Se retornar
true
, suponha que uma ou mais caixas de seleção estejam marcadas com o nome da classetest_check
e nenhuma marcada se retornarfalse
.Espero que ajude alguém. Obrigado :)-
fonte
Essa é a melhor maneira de resolver esse problema.
fonte