Вам необходимо установить значения для флажков:
<input name='chx' type='checkbox' value='1'>
Если флажок установлен, он будет иметь значение 1, в противном случае его значение будет равно False (0, false,! Value и т. Д. c). ). Не нужно беспокоиться о значении непроверенного флажка, потому что во время события отправки он будет игнорироваться. Также нет необходимости использовать jQ для установки значения флажка.
В демоверсии, когда событие изменения срабатывает на input#ALL
- все флажки установлены, если input#ALL:checked
, в противном случае все не отмечены.
Вторая функция просто имитирует, какие значения будут отправлены при отправке.
Демо
Примечание: Подробности прокомментированы в демо
/*
change event on input#ALL
if #ALL.checked = chx: true else false
All checkboxes "checked" prop/attr = chx
*/
$('#ALL').on('change', function(e) {
let chx = $(this)[0].checked ? true : false;
$(':checkbox').prop('checked', chx);
});
/*
if any checkbox is unchecked then #ALL will be unchecked as well
*/
$(':checkbox:not(#ALL)').on('change', function(e) {
if (!$(this).is(':checked')) {
$('#ALL').prop('checked', false);
}
});
/*
click on button
Collect all checked checkboxes values return as array
Set output#view value to the array of values
*/
$('button').on('click', function(e) {
let val = $(':checkbox:checked').map(function() {
return $(this).val();
}).get();
$('#view').val(val);
});
:root,
body {
font: 700 4vw/1.45 Verdana;
background: #fff;
}
fieldset {
width: max-content;
}
label {
display: block;
cursor: pointer;
padding: 3px 6px;
}
label:hover {
background: #000;
color: #fff;
}
label::after {
content: ' 'attr(class)' ';
font: inherit;
display: inline-block;
vertical-align: middle;
}
.ALL,
input,
button {
font: inherit;
display: inline-block;
vertical-align: middle;
}
#view {
display: block;
width: 18ch;
height: 2vw;
margin: -6px auto 12px;
}
<fieldset>
<legend>
<label class='ALL'>
<input id='ALL' name='ALL' type='checkbox' value='ALL'>
</label>
<button>CHECK</button>
</legend>
<output id='view'></output>
<label class='A'>
<input name='A' type='checkbox' value='A1'>
</label>
<label class='B'>
<input name='B' type='checkbox' value='B2'>
</label>
<label class='C'>
<input name='C' type='checkbox' value='C3'>
</label>
<label class='D'>
<input name='D' type='checkbox' value='D4'>
</label>
<label class='E'>
<input name='E' type='checkbox' value='E5'>
</label>
<label class='F'>
<input name='F' type='checkbox' value='F6'>
</label>
</fieldset>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>