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 
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