Флажки HTML (то есть элементы input
типа checkbox
) не имеют третьего состояния (частично проверено). Так что нет, прямого способа сделать это нет.
То, что вам, вероятно, нужно будет сделать, это создать собственное изображение в виде флажков и привязать его к различным событиям (например, щелкнуть), чтобы сохранить его текущее «состояние» в поле формы hidden
через JavaScript. Однако при таком подходе вы можете столкнуться с рядом проблем.
Например, клавиатурная навигация формы может быть невозможна для этого конкретного элемента. (Можно одну вкладку к изображению и отправить ему события клавиатуры? Я не уверен.)
Кроме того, вы можете попробовать манипулировать пользовательскими атрибутами в элементе флажка через JavaScript, чтобы сохранить третье состояние. Но рендеринг самого элемента не имеет визуального индикатора чего-то подобного. Возможно, вы могли бы манипулировать его стилем (цвет, цвет фона, цвет рамки и т. Д.), Чтобы попытаться имитировать визуальное поведение. Но вы, возможно, не сможете добиться именно того визуального стиля, который используете для справки.
Это, безусловно, интересная перспектива, и я заинтригован настолько, что я могу попытаться реализовать что-то подобное в ближайшем будущем. Но с собственным элементом флажка это невозможно. У него только два состояния.
Редактировать: См. @ kassens 'ответ для выполнения этого в HTML5. Если по какой-либо причине вы ограничены предыдущими версиями HTML, то это будет хак, как описано здесь. Но если вы можете положиться на пользователей, поддерживающих HTML5, то, похоже, встроенная поддержка есть.