ПРИМЕЧАНИЕ : ID должен быть уникальным на странице!
объяснение
Поскольку другие ответы не упоминают об этом, метка может включать до 1 ввода и пропускать forатрибут, и предполагается, что он предназначен для ввода внутри него.
[Атрибут for] явно связывает определяемую метку с другим элементом управления. Если присутствует, значение этого атрибута должно совпадать со значением атрибута id какого-либо другого элемента управления в том же документе. Когда отсутствует, определяемая метка связана с содержимым элемента.
Чтобы неявно связать метку с другим элементом управления, элемент управления должен находиться внутри содержимого элемента LABEL . В этом случае LABEL может содержать только один элемент управления. Сама метка может быть расположена до или после ассоциированного элемента управления.
Использование этого метода имеет ряд преимуществ перед for:
Нет необходимости присваивать idкаждому флажку (отлично!).
Нет необходимости использовать дополнительный атрибут в <label>.
Кликабельная область ввода также является кликабельной областью метки, поэтому нет двух отдельных мест для нажатия, которые могут контролировать флажок - только одно, независимо от того, насколько далеко друг от друга <input>и фактический текст метки, и независимо от того, какой тип CSS вы используете. применить к этому.
Любите это, но, пожалуйста, отредактируйте снова. Это хорошо только для флажков. Давайте не будем призывать людей наклеивать ярлыки на другие входные данные, потому что это нарушит систему сетки, и мобильность будет затруднена
Max
1
Если кто-то может объяснить комментарий, оставленный @John, пожалуйста, сделайте, потому что это не имеет никакого смысла для меня вообще.
Уэсли Мёрч
16
@ Джон, это руководство по разметке специально для начальной загрузки. Если вы не используете фреймворк или используете другой, это должно быть вполне нормально. Спасибо за ответ.
Уэсли Мёрч
3
@John. На странице, на которую вы ссылаетесь, примеры начальной загрузки, все флажки переноса с меткой, я не вижу никаких предупреждений, которые вы указываете вообще, возможно, они больше не относятся к последней загрузке.
user2144406
2
Как я узнал сегодня, не смешивайте Метод 1 и Метод 2. Если вы поместите флажок в метку И включите for, то нажатие на метку не вызовет флажок.
BBlake
50
Просто убедитесь, что метка связана с вводом.
<fieldset><legend>What metasyntactic variables do you like?</legend><inputtype="checkbox"name="foo"value="bar"id="foo_bar"><labelfor="foo_bar">Bar</label><inputtype="checkbox"name="foo"value="baz"id="foo_baz"><labelfor="foo_baz">Baz</label></fieldset>
С PHP, разве что $ _POST ['foo'] всегда будет иметь одно из двух значений максимум одновременно? Даже если оба проверены. Что такое группа флажков?
Джеромей
2
@JeromeJ: Для PHP , чтобы правильно обращаться с этим, вы должны добавить квадратные скобки названия, например: <input type="checkbox" name="foo[]" value="bar" ...>. Это даст вам массив, который содержит значения всех отмеченных полей (которые имеют это имя). Например, $_POST['foo'][0]может быть barи $_POST['foo'][1]может быть baz(если оба проверены).
Левит
11
Вы также можете использовать псевдоэлементы CSS для выбора и отображения ваших ярлыков из всех атрибутов значения вашего флажка (соответственно). Изменить: Это будет работать только с браузерами на основе webkit и blink (Chrome (ium), Safari, Opera ....) и, следовательно, с большинством мобильных браузеров. Никакой поддержки Firefox или IE здесь.
Это может быть полезно только при встраивании webkit / blink в ваши приложения.
Правда. Геккону, трезубцу и геккону, похоже, не нравится это. Это будет работать только с Webkit и Blink. Я
обновлю
3
Downvoted. Хотя это возможно, это плохой способ - не работает во многих браузерах, не подходит для доступности.
Джеймс Биллингем
Помимо проблем совместимости, это решение не такое семантическое, как главный ответ, поскольку в разметке нет прямой связи между <label> и <input>
deadboy
«Это работает на Webkit / Blink» пахнет как ошибка при использовании ( stackoverflow.com/questions/2587669/… ), поэтому он может перестать работать в любое время.
Ксенос
7
<labelfor="vehicle">Type of Vehicle:</label><inputtype="checkbox"id="vehicle"name="vehicle"value="Bike"/>
Так как это может сбивать с толку некоторых читателей, вы должны изменить nameзначение атрибута на что - то иное , чем значение , которое присутствует в forи idатрибуты, так как эти два связаны, в то время как nameне является (это стил обязательно быть включены я считаю , хотя) ,
Для этого не обязательно использовать JavaScript. Он встроен в HTML.
Лассе Банк
4
@LasseBunk, если бы это был просто JavaScript, но вся библиотека jQuery необходима для этого. Посмотрим, сможет ли кто-нибудь придумать решение Angular 2.
Ответы:
Метод 1: обернуть метку
Оберните флажок внутри
label
тега:Метод 2: Используйте
for
атрибутИспользуйте
for
атрибут (соответствует флажкуid
):ПРИМЕЧАНИЕ : ID должен быть уникальным на странице!
объяснение
Поскольку другие ответы не упоминают об этом, метка может включать до 1 ввода и пропускать
for
атрибут, и предполагается, что он предназначен для ввода внутри него.Выдержка из w3.org (с моим акцентом):
Использование этого метода имеет ряд преимуществ перед
for
:Нет необходимости присваивать
id
каждому флажку (отлично!).Нет необходимости использовать дополнительный атрибут в
<label>
.Кликабельная область ввода также является кликабельной областью метки, поэтому нет двух отдельных мест для нажатия, которые могут контролировать флажок - только одно, независимо от того, насколько далеко друг от друга
<input>
и фактический текст метки, и независимо от того, какой тип CSS вы используете. применить к этому.Демо с некоторыми CSS:
источник
Просто убедитесь, что метка связана с вводом.
источник
<input type="checkbox" name="foo[]" value="bar" ...>
. Это даст вам массив, который содержит значения всех отмеченных полей (которые имеют это имя). Например,$_POST['foo'][0]
может бытьbar
и$_POST['foo'][1]
может бытьbaz
(если оба проверены).Вы также можете использовать псевдоэлементы CSS для выбора и отображения ваших ярлыков из всех атрибутов значения вашего флажка (соответственно).
Изменить: Это будет работать только с браузерами на основе webkit и blink (Chrome (ium), Safari, Opera ....) и, следовательно, с большинством мобильных браузеров. Никакой поддержки Firefox или IE здесь.
Это может быть полезно только при встраивании webkit / blink в ваши приложения.
Все ярлыки псевдоэлементов будут кликабельными.
Демо-версия: http://codepen.io/mrmoje/pen/oteLl , + Суть этого
источник
источник
источник
name
значение атрибута на что - то иное , чем значение , которое присутствует вfor
иid
атрибуты, так как эти два связаны, в то время какname
не является (это стил обязательно быть включены я считаю , хотя) ,Это тоже работает:
источник
for
иid
атрибуты в вашем примере, так какlabel
тег имеет только один входной элемент внутри него.Это должно помочь вам: W3Schools - Ярлыки
источник
источник
Используйте
label
элемент иfor
атрибут, чтобы связать его с флажком:<label for="myCheckbox">Some checkbox</label> <input type="checkbox" id="myCheckbox" />
источник
На угловой этикетке материала с флажком
источник
Использовать этот
источник