Tenho a seguinte série de caixas de seleção na minha página:
$("#chkLoc0").click(function() {
$('[id^=chkLoc]:not(#chkLoc0)').prop('checked', $(this).prop('checked'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<div class="form-group row" id="Location">
<div class="col">
<label class="checkbox-inline">
<input type="checkbox" id="chkLoc0" name="Locations[0].SelectedSection" value="1" />
Any <br />
</label>
<label class="checkbox-inline">
<input type="checkbox" id="chkLoc1" name="Locations[0].SelectedSection" value="2" />
Test1 <br />
</label>
<label class="checkbox-inline">
<input type="checkbox" id="chkLoc2" name="Locations[0].SelectedSection" value="3" />
Test2 <br />
</label>
<label class="checkbox-inline">
<input type="checkbox" id="chkLoc3" name="Locations[0].SelectedSection" value="4" />
Test3 <br />
</label>
<label class="checkbox-inline">
<input type="checkbox" id="chkLoc4" name="Locations[0].SelectedSection" value="5" />
Test4 <br />
</label>
</div>
Se o usuário marcar a caixa "Qualquer", quero que as demais caixas sejam marcadas e também que as demais caixas de seleção sejam desativadas. É isso que preciso marcar para as demais caixas de seleção se "Qualquer" for clicado e funcionar.
$("#chkLoc0").click(function () {
$('[id^=chkLoc]:not(#chkLoc0)').prop('checked', $(this).prop('checked'));
});
Tentei escrever o código abaixo para desabilitar o restante das caixas de seleção se "Qualquer" for clicado, mas não está funcionando. Eis o que eu tenho:
$("#chkLoc0").click(function () {
$('[id^=chkLoc]:not(#chkLoc0)').prop('disabled', $(this).prop('disabled'));
});
Como posso desabilitar todas as caixas de seleção quando a caixa de seleção "Qualquer" estiver marcada? Estou apenas tentando fazer com que, se a caixa de seleção "Qualquer" estiver marcada, todas as caixas de seleção permaneçam marcadas. Não quero que o usuário clique na caixa de seleção "Qualquer" e depois desmarque algumas caixas de seleção, como "Teste1" e "Teste2". Quero garantir que, se "Qualquer" for marcado, "Teste1", "Teste2", "Teste3" e "Teste4" permaneçam marcadas. Às vezes, o usuário clica na caixa de seleção "Qualquer" e depois desmarca uma ou duas caixas de seleção. Quero desabilitar "Teste1", "Teste2", "Teste3" e "Teste4" para que permaneçam marcadas.
Basta usar
props
dentro de umclick
evento para Any, encontrar as outras caixas de seleção e alterar suas propriedades com base na propriedade marcada.Exemplo com classe:
Uma abordagem alternativa é fazer com que a caixa de seleção Qualquer responda à marcação e desmarcação de outras caixas de seleção:
Exemplo com classe:
A resposta aceita para mim é simplesmente algo que funciona, mas, na minha opinião, não é a melhor abordagem. Antes de mais nada, eu recomendo fortemente parar de usar jQuery e migrar para JS comum.
Mesmo que seu projeto já esteja usando jQuery, pode não ser uma má ideia começar a usar JS normal para que você possa mudar quando todo o jQuery estiver disponível.
Esta resposta fornece uma abordagem mais lógica. (IMO)
Entendo que você gostaria que a caixa de seleção "Qualquer" fosse consistente com as demais, mas um padrão comum em casos como este é que o usuário pode marcar todas (usando "Qualquer") e depois desmarcar uma ou mais das outras. Portanto, certifique-se de desmarcar "Qualquer" se alguma das outras estiver desmarcada.
E então a alternativa que você pede: