Desmarcar ultimo checkbox se a qtd selecionada>10

Possuo um select que tem como options vários checkboxes.

    <select style="max-width: 3800px;width: 380px" name="emitentemb" id="emitentemb" multiple="" class="mt-select">
        <input type="checkbox" data-name="selectItememitentemb" value="">
    </select>

Ao selecionar mais que 10 checkbox gostaria de desmarcar o ultimo selecionado(ou seja o 11º).Como posso fazer isso?
Tentei fazer mas o que esse código abaixo está fazendo é desmarcar o 10º item e marcar o 11º.

var lastChecked;
var checks = $('input[data-name="selectItememitentemb"]').change(function (e) {
var numChecked = checks.filter(':checked').length;
 if (numChecked > 10) {
    alert("Selecione até 10 membros");
    lastChecked.checked = false;
}
lastChecked = this;
})

Veja se resolve…

$('input[data-name="selectItememitentemb"]').filter(":checked:gt(10)").attr("checked", false);

Isso vai desmarcar todos após o 10 encontrado, se quiser apenas o ultimo a partir do 11 adicione :last após o gt() e veja se atende…

Coloquei este seu código dentro do

$(document).ready(function () {
     $('input[data-name="selectItememitentemb"]').filter(":checked:gt(10)").attr("checked", false);
});

e não funcionou :frowning:

No caso você colocou no escopo global, deveria ser no escopo do change… tente dessa outra forma…

$('input[data-name="selectItememitentemb"]').change(function () {
    $(this).filter(':checked:gt(10)').attr('checked', false);
});

Posso ter errado em algo, pesquise mais sobre os filtros e sobre os comparativos gt, eq, lt etc vai te ajudar nisso ai…

1 curtida

Ainda não deu certo,mas muito obrigado pela ajuda,vou pesquisar mais a respeito sim!

Quando conseguir uma solução, compartilha com a gente! Sucesso!

1 curtida