Существует неопределенное значение флажка. Это флажок (
), который не проверяется. И это не не проверено. Это неопределенно.
Мы можем даже выбрать флажок в этом состоянии и создать его с помощью CSS!
Некоторые любопытные точки, хотя:
- Это можно установить только через JavaScript. Для него нет атрибута или значения HTML.
- Это не POST (или GET или что-то еще) или имеет значение. Это как неконтролируемый.
Итак, скажем, у вас была такая форма:
И, для по любой причине вы делаете этот флажок неопределенным:
let veg = document.querySelector (". Veg");
veg.indeterminate = true;
Если вы сериализуете эту форму и посмотрите, что будет POST, вы получите «name = Chris»
. Нет значения для флажка. И наоборот, если бы вы установили флажок в HTML и не коснулись его в JavaScript, вы бы получили «name = Chris & vegetarian = on»
.
По-видимому, это по дизайну. Флажки должны быть логическими, а неопределенное значение — это просто эстетическая вещь, означающая, что визуальные «детские» флажки находятся в смешанном состоянии (некоторые проверены, а некоторые нет). Все в порядке. Невозможно изменить его сейчас без серьезного поломки веб-сайтов.
Но скажите, что вам действительно нужно знать на сервере, если флажок находится в этом неопределенном состоянии. Единственный способ, о котором я могу думать, — это иметь скрытый вход приятеля, который вы держите в синхронизации.
let veg = document.querySelector (". Veg");
let veg_value = document.querySelector (". veg-value");
veg.indeterminate = true;
veg_value.value = "неопределенный";
Я установил значение неопределенного значения
для одного входа и . Я установил еще одно скрытое значение ввода «неопределенный»
который я могу ПОСТ. Сериализованный означает, что он выглядит как «name = Chris & vegetarian-value = indeterminate»
. Хорошо.
См. «Перо». Можете ли вы POST получить промежуточное значение? Крисом Койером (@chriscoyier) на CodePen.
Связанные