Почему флажки html передают только значение 'on'?

Я только начинаю изучать интернет-программирование.

После обхода флажками я обнаружил, что это происходит только тогда, когда флажок установлен, что он передает значение 'on'.

Почему бы не отправить значение "off"?

Ответ 1

Я думаю, это должно быть для краткости передачи. Каждый запрос на сервер отправляется "по кабелю", если у вас есть страница с тысячами флажков на нем, вы обнаружите, что количество данных, чтобы сообщить серверу, что "этот флажок выключен", на самом деле довольно значителен (видя как вам нужно будет отправить NAME из каждого элемента флажка, который может содержать до мегабайта информации, что замедлит работу всего пользователя и интернет вниз).

В то время как на самом деле вы знаете, что он отключен, потому что он не отправляется - так что нет необходимости его отправлять.

Ответ 2

Возможно иметь много флажков с одним и тем же именем элемента:

<form action="order.php" method="get">

  <p>
    <label><input type="checkbox" name="toppings" value="olives"/>Olives</label>
    <label><input type="checkbox" name="toppings" value="mushrooms"/>Mushrooms</label>
    <label><input type="checkbox" name="toppings" value="onions"/>Onions</label>
    <label><input type="checkbox" name="toppings" value="eggplant"/>Eggplant</label>
    etc...
  </p>

  <p><input type="submit" value="Submit"/></p>

</form>

Впоследствии URL-адрес будет включать только проверенные значения и будет выглядеть примерно так:

order.php?toppings=mushrooms&toppings=onions&toppings=eggplant

Это не сработало бы, если бы было отправлено значение "off".

Ответ 3

Состояние по умолчанию "unchecked" (или выключено, когда вы его укажете), поэтому нет необходимости объявлять эту информацию.

Ответ 4

Как типичный для булевых значений, он предположил. Это просто проверить, однако, просто зависит от вашего языка выбора. Используемый PHP в качестве демонстрации можно проверить:

$myvar_enabled = (isset($_GET['myvar']) && $_GET['myvar'] == 'on');