Как сделать так, чтобы флажок переключался с нажатия на текстовую метку? - PullRequest
32 голосов
/ 05 августа 2008

Checkboxes в HTML формах не имеют неявных меток с ними. Добавление явного ярлыка (некоторый текст) рядом с ним не переключает checkbox.

Как сделать так, чтобы флажок также переключался при нажатии на текстовую метку?

Ответы [ 8 ]

44 голосов
/ 05 августа 2008

Если вы правильно разметили свой HTML-код, нет необходимости в javascript. Следующий код позволит пользователю щелкнуть текст метки, чтобы поставить галочку.

<label for="surname">Surname</label>
<input type="checkbox" name="surname" id="surname" />

Атрибут для в элементе метки связан с атрибутом id в элементе ввода, а браузер сделает все остальное.

Это тестирование для работы в:

  • IE6
  • IE7
  • Firefox
19 голосов
/ 05 августа 2008

Установите свойство CSS display для метки в качестве элемента блока и используйте его вместо своего div - оно сохраняет семантическое значение метки, позволяя использовать любой стиль, который вам нравится.

Например:

label {
  width: 100px;
  height: 100px;
  display: block;
  background-color: #e0e0ff;
}
<label for="test">
  A ticky box! <input type="checkbox" id="test" />
</label>
3 голосов
/ 25 августа 2008

Как указывает @Gatekiller и другие, правильным решением является тег

Click-in-the-text - это хорошо, но есть еще одна причина для использования тега

Очень неприятно сталкиваться с формой, которая гласит: "Пожалуйста, выберите способ доставки, радио-кнопка1, радио-кнопка2, радио-кнопка3".

Обратите внимание, что веб-доступность является сложной темой;

2 голосов
/ 05 августа 2008

Ронни,

Если вы хотите заключить текст метки и флажок в элемент оболочки, вы можете сделать следующее:

<label for="surname">
    Surname
    <input type="checkbox" name="surname" id="surname" />
</label>
1 голос
/ 05 августа 2008

Вы можете поставить галочку в ярлыке:

<label style="display: block; padding: 50px 0 0 50px; background-color: pink; width: 80px; height: 80px">
  <input type="checkbox" name="surname">
</label>
0 голосов
/ 01 сентября 2015

Вам нужно просто обернуть флажок в метке тега так же, как это

 <label style="height: 10px; width: 150px; display: block; ">
  [Checkbox Label Here] <input type="checkbox"/>
 </label>

FIDDLE

или вы также можете использовать атрибут для метки и id вашего флажка, как показано ниже

<label for="other">Other Details</label>
<input type="checkbox" id="other" />

FIDDLE

0 голосов
/ 09 марта 2015

это должно работать:

<script>
function checkbox () {
    var check = document.getElementById("myCheck").checked;
    var box = document.getElementById("myCheck")

    if (check == true) {
        box.checked = false;
    }
    else if (check == false) {
        box.checked = true;
    }
}
</script>
<input type="checkbox"><p id="myCheck" onClick="checkbox();">checkbox</p>

Если это не так, проси меня!

0 голосов
/ 05 августа 2008

Упаковка с надписью по-прежнему не позволяет нажимать «где-нибудь в поле» - все еще только на тексте! Это делает работу для меня:

<div onclick="dob.checked=!dob.checked" class="checkbox"><input onclick="checked=!checked" id="dob" type="checkbox"/>Date of birth entry must be completed</div>

но, к сожалению, в нем много javascript, который эффективно переключается дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...