Это очень распространенная проблема - если флажок не установлен, он не будет отправлять на сервер значение off / false само по себе.Самый популярный ответ, который я нашел, это добавить скрытое поле с тем же именем, что и у флажка, и значение = false.Но когда кто-то это проверил, мне прислали два значения.
И мне это не понравилось.Вот что я сделал:
Где-то в HTML:
<input type="checkbox" name="${name}" onclick="true" >
В JQuery:
Первый шаг кустановить скрытые значения на всех флажках, которые не отмечены.
$(document).ready(function () {
$(".checkbox").each(function () {
if ($(this).prop("checked") == undefined) {
$(this).after("<input type=\"hidden\" name=\"" + $(this).attr("name") + "\" value="off">")
}
}
)
});
Во-вторых, мы должны отреагировать на то, что пользователь установит флажок: при снятии флажка добавить скрытое поле, при выборе - удалить следующего брата в DOM -там ожидаемое скрытое поле.
ПРЕДУПРЕЖДЕНИЕ : если у флажков есть общий родительский элемент, следует проверить, скрыт ли тип следующего брата, а затем удалить его!:
$(".checkbox").click(function () {
if ($(this).prop("checked") == undefined) {
$(this).after("<input type=\"hidden\" name=\"" + $(this).attr("name") + "\" value=off>")
} else {
$(this).next().remove();
}
}
);
И у меня это работает :) 1024 *