Входные данные флажков на самом деле немного странные и работают не так, как вы думаете.
Вам не нужен jQuery для обработки случая, когда флажок был изменен. Браузер и HTML обрабатывают это для вас. (Вроде того, как вам не нужно прослушивать нажатие клавиш, пока пользователь фокусируется на вводе type = "text", чтобы буквы отображались в текстовом поле.)
Вместо этого происходитесли пользователь установит флажок, у ввода будет атрибут с именем флажок. Это может выглядеть примерно так:
Тег ввода флажка также имеет два других атрибута name и value. Это то, что отправляется на сервер при отправке формы. НО он отправляет только пару имя-значение для отмеченных флажков! Для флажков, которые не отмечены, он ничего не отправляет. Поэтому, если у каждого флажка есть имя и значение, вы можете рассматривать его как пару ключ-значение. Если флажок установлен, он отправит ключ = значение на сервер. Вам разрешено иметь более одного значения для одного ключа, если вы указываете имя как имя массива.
Итак, представьте, что у вас есть такая форма:
<input type="checkbox" name="disease[]" value="tuberculosis" checked>
<input type="checkbox" name="disease[]" value="chickenpox" checked>
<input type="checkbox" name="disease[]" value="smallpox">
<input type="checkbox" name="needs_medicine" value="true" checked>
<input type="checkbox" name="recovered" value="whatevervalue">
Когда эта форма отправлена, сервер получит что-то, похожее на "болезнь = [туберкулез, ветряная оспа] & needs_medicine = true"
Обратите внимание, что оспа и выздоровление не упоминаются, потому что они не проверены. Также обратите внимание, что не очень важно то, что вы указали в качестве значения флажка, который не является флажком с множественным выбором (в этом примере needs_medicine), потому что значение, которое отправляется на сервер, всегда будет либо значением флажка (вв этом случае строка «true»).