POST снял флажок с флажками HTML

Пример приложения из MSDN

И немного внутренней информации из Блог команды ADO.NET

282
задан Wouter 14 May 2018 в 22:14
поделиться

4 ответа

Это можно сделать только с помощью некоторого javascript, поскольку не отмеченные флажки не передаются. Итак, вам нужен javascript, который, например, неявно добавляет скрытые поля при снятии флажка. Без javascript это было бы невозможно.

0
ответ дан 23 November 2019 в 01:54
поделиться

Обычный способ решения этой проблемы - перенос скрытой переменной вместе с каждым флажком.

<input type="checkbox" name="mycheckbox" />
<input type="hidden" name="mycheckbox.hidden"/>

На стороне сервера мы сначала обнаруживаем список скрытых переменных и для каждой скрытой переменной мы пытаемся увидеть, отправлена ​​ли соответствующая запись флажка в данные формы или нет.

Алгоритм на стороне сервера, вероятно, будет выглядеть так:

for input in form data such that input.name endswith .hidden
  checkboxName = input.name.rstrip('.hidden')
  if chceckbName is not in form, user has unchecked this checkbox

Вышеупомянутое не совсем отвечает на вопрос, но предоставляет альтернативные средства достижения аналогичной функциональности.

20
ответ дан 23 November 2019 в 01:54
поделиться

Вы можете использовать Javascript в событии отправки формы. Это все, что вы можете сделать, браузеры никак не могут сделать это сами. Это также означает, что ваша форма не работает для пользователей без Javascript. Лучше знать на сервере, какие есть флажки, чтобы вы могли сделать вывод, что те, которые отсутствуют в опубликованных значениях формы ( $ _ POST в PHP), не отмечены.

11
ответ дан 23 November 2019 в 01:54
поделиться

Решение, которое мне больше всего понравилось, это поставить скрытый вход с тем же именем, что и флажок, который может не быть отмечен. Я думаю, что это работает так, что если флажок не установлен, то скрытый ввод все равно будет успешным и отправлен на сервер, но если флажок установлен, то он переопределит скрытый ввод перед ним. Таким образом, вам не нужно будет отслеживать, какие значения в размещенных данных ожидались от чекбоксов.

<form>
  <input type='hidden' value='0' name='selfdestruct'>
  <input type='checkbox' value='1' name='selfdestruct'>
</form>
446
ответ дан 23 November 2019 в 01:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: