Я извлекаю значения флажков из базы данных через ajax, в котором каждый пользователь должен иметь один или несколько флажков. Из которого пользователь должен установить все флажки, кроме одного, оставшегося напоследок. Я имею в виду, что один флажок должен оставаться неотмеченным.
<div class = "checkboxes">
<div class = "selection">
<label><input type = "checkbox" value = "5" data-toggle = "checkbox"> checkbox 1</label>
</div><br/>
<div class = "selection">
<label><input type = "checkbox" value = "10" data-toggle = "checkbox"> checkbox 2</label>
</div><br/>
<div class = "selection">
<label><input type = "checkbox" value = "15" data-toggle = "checkbox">checkbox 3</label>
</div>
</div>
@ maximelian1986 OP, вероятно, просит ограничить количество флажков, которые может установить пользователь. Из десяти можно проверить только 9. Это может быть любой из 10, который не нужно проверять
Добро пожаловать в Stackoverflow. См. stackoverflow.com/help/как спросить . И добавьте больше подробностей о проблеме, с которой вы столкнулись. Поделитесь соответствующими фрагментами кода, которые вы пробовали до сих пор.
@ maximelian1986 Не могу отключить. потому что я хочу, чтобы последний флажок проверки оставался неотмеченным, это должен быть случайный флажок.
Вы можете использовать: $( "input[type=checkbox]" ).prop("checked", true);
, чтобы установить флажок для всех входных данных.
и: $( "input[type=checkbox]" ).last().prop("checked", false);
снять отметку с последнего.
$( "input[type=checkbox]" ).prop("checked", true);
$( "input[type=checkbox]" ).last().prop("checked", false);
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "checkboxes">
<div class = "selection">
<label><input type = "checkbox" value = "5" data-toggle = "checkbox"> checkbox 1</label>
</div><br/>
<div class = "selection">
<label><input type = "checkbox" value = "10" data-toggle = "checkbox"> checkbox 2</label>
</div><br/>
<div class = "selection">
<label><input type = "checkbox" value = "15" data-toggle = "checkbox">checkbox 3</label>
</div>
</div>
Как поясняет ОП:
Вы можете просто использовать:
let checkboxcountlimit= $('input:checkbox').length-1;
$('input[type=checkbox]').click(function() {
let checkboxchecked= $('input:checkbox:checked').length;
if ($(this).is(':checked')) {
if (checkboxchecked > checkboxcountlimit){
//if ($(this).is($( "input[type=checkbox]" ).last())){
$( "input[type=checkbox]" ).last().prop("checked", false);
//}
}
}
});
чтобы снять флажок, когда был установлен последний флажок. И когда общее количество проверенных флажков больше, чем общее количество флажков минус один. Обратите внимание, что вы можете раскомментировать, если хотите, чтобы последний флажок был снят только тогда, когда этот последний флажок установлен.
let checkboxcountlimit= $('input:checkbox').length-1;
$('input[type=checkbox]').click(function() {
let checkboxchecked= $('input:checkbox:checked').length;
if ($(this).is(':checked')) {
if (checkboxchecked > checkboxcountlimit){
//if ($(this).is($( "input[type=checkbox]" ).last())){
$( "input[type=checkbox]" ).last().prop("checked", false);
//}
}
}
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "checkboxes">
<div class = "selection">
<label><input type = "checkbox" value = "5" data-toggle = "checkbox"> checkbox 1</label>
</div><br/>
<div class = "selection">
<label><input type = "checkbox" value = "10" data-toggle = "checkbox"> checkbox 2</label>
</div><br/>
<div class = "selection">
<label><input type = "checkbox" value = "15" data-toggle = "checkbox">checkbox 3</label>
</div>
</div>
если вы хотите, чтобы текущий флажок был снят, если он превышает минус один счетчик.
Вы можете использовать:
let checkboxcountlimit= $('input:checkbox').length-1;
$('input[type=checkbox]').click(function() {
let checkboxchecked= $('input:checkbox:checked').length;
if ($(this).is(':checked')) {
if (checkboxchecked > checkboxcountlimit){
$(this).prop("checked", false);
}
}
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "checkboxes">
<div class = "selection">
<label><input type = "checkbox" value = "5" data-toggle = "checkbox"> checkbox 1</label>
</div><br/>
<div class = "selection">
<label><input type = "checkbox" value = "10" data-toggle = "checkbox"> checkbox 2</label>
</div><br/>
<div class = "selection">
<label><input type = "checkbox" value = "15" data-toggle = "checkbox">checkbox 3</label>
</div>
</div>
onload
все флажки должны быть сняты, и когда пользователь хочет установить его, последний должен оставаться не отмеченным или отключенным, и когда пользователь хочет установить этот флажок, он или она должны снять хотя бы один другой флажок.
надеюсь это поможет
function checkMe() {
var selected = [];
$('.selection input:checked').each(function() {
selected.push($(this).attr('value'));
});
if (selected.length >= ($('.selection input').length)) {
return false
}
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<div class = "checkboxes">
<div class = "selection">
<label><input type = "checkbox" value = "5" onclick = "return checkMe()" data-toggle = "checkbox"> checkbox 1</label>
</div><br/>
<div class = "selection">
<label><input type = "checkbox" value = "10" onclick = "return checkMe()" data-toggle = "checkbox"> checkbox 2</label>
</div><br/>
<div class = "selection">
<label><input type = "checkbox" value = "15" onclick = "return checkMe()" data-toggle = "checkbox">checkbox 3</label>
</div>
</div>
Зачем нужен флажок, который нельзя поставить? Но в любом случае просто отключите его.