Мой личный фаворит - добавить скрытое поле с тем же именем, которое будет использоваться, если флажок снят. Но решение не так просто, как может показаться.
Если вы добавите этот код:
<form>
<input type='hidden' value='0' name='selfdestruct'>
<input type='checkbox' value='1' name='selfdestruct'>
</form>
Браузер не особо заботится о том, что вы здесь делаете. Браузер отправит оба параметра на сервер, и сервер должен решить, что с ними делать.
Например, PHP принимает последнее значение в качестве используемого (см .: Официальная позиция дублированных ключей запроса HTTP GET )
Но другие системы, с которыми я работал (основанные на Java), делают это наоборот - они предлагают вам только первое значение.
Вместо этого .NET даст вам массив с обоими элементами вместо
Я попробую проверить это когда-нибудь с помощью node.js, Python и Perl.