Флажок не устанавливается при клике на метку
Я не уверен, является ли это проблемой WordPress, но когда я создаю простую форму как виджет в боковой панели, флажок не устанавливается при клике на метку. Странно, но это работает, когда я подключаю ту же форму через get_template_part в навигацию. Я хочу использовать 'checkbox hack', который зависит от кликабельности метки. Моя форма выглядит так:
<form action="http://email.littlefishfx.com/t/r/s/jijiat/" method="post">
<p class="checks">
<input id="fieldjtdktry-0" name="cm-fo-jtdktry" value="4469820" type="checkbox" /> <label for="fieldjtdktry-0"><span></span>Изучать</label>
<input id="fieldjtdktry-1" name="cm-fo-jtdktry" value="4469821" type="checkbox" /> <label for="fieldjtdktry-1"><span></span>Торговать</label>
<input id="fieldjtdktry-2" name="cm-fo-jtdktry" value="4469822" type="checkbox" /> <label for="fieldjtdktry-2"><span></span>Инвестировать</label>
<input id="fieldjtdktry-3" name="cm-fo-jtdktry" value="4469823" type="checkbox" /> <label for="fieldjtdktry-3"><span></span>Тратить</label>
</p>
<p>
<input id="fieldEmail" name="cm-jijiat-jijiat" type="email" required placeholder="Ваш email адрес" />
<br />
<button type="submit"><span>Подписаться</span></button>
</p>
</form>
Обе формы можно найти на littlefishfx.com/contact, одна выпадает из кнопки 'subscribe' в главном меню, а другая (та же форма) находится в самом низу боковой панели.
Есть ли советы, почему это может происходить? Одинаковые результаты в Chrome, Safari и Firefox (mac).
** РЕДАКТИРОВАНИЕ **
Если я оберну мои флажки в метку следующим образом:
<label><input id="fieldjtdktry-0" name="cm-fo-jtdktry" value="4469820" type="checkbox" /><span></span>Изучать</label>
Тогда клик по метке работает везде. Это выглядит как лучшее решение (?), но оставляет меня в тупике относительно того, как использовать checkbox hack, который я изначально пытался реализовать. Вот CSS, над которым я работал:
/* Скрываем стандартный чекбокс */
input[type="checkbox"] {
display:none;
}
/* Стилизуем кастомный чекбокс */
input[type="checkbox"] + label span {
display: inline-block;
width: 20px;
height: 20px;
margin: -1px 6px 0 0;
vertical-align: middle;
background: url(images/checkbox-sprite.gif) left top no-repeat;
cursor: pointer;
}
/* Стиль для отмеченного состояния */
input[type="checkbox"]:checked + label span {
background: url(images/checkbox-sprite.gif) right top no-repeat;
}

Хорошо, если это кому-то пригодится. Оригинальный туториал по чекбокс-хаку, которому я следовал, взят отсюда.
Я обошёл проблему, с которой столкнулся в WordPress, обернув чекбоксы в теги label, вот так:
<label><input id="fieldjtdktry-0" name="cm-fo-jtdktry" value="4469820" type="checkbox" /><span></span>Learn</label>
и затем просто изменив CSS-селектор на:
label input[type="checkbox"] + span {
вместо оригинального:
input[type="checkbox"] + label span {
Работает отлично!

У меня была такая же проблема, но ваш ответ не помог. Поэтому, если у кого-то все еще есть эта проблема, убедитесь, что значение атрибута for
в теге <label>
совпадает с id
элемента <input>
. Это решило проблему в моем случае.
То есть:
<label for="love">
<input type="checkbox" id="love"/>
источник: https://stackoverflow.com/questions/6712029/label-not-working-with-checkbox/#answer-6712054

Перезагрузите страницу, нажмите на два чекбокса и запомните их. Затем отключите все CSS. Вы увидите, что они остаются отмеченными. Это означает, что какой-то стиль некорректно оформляет ваши чекбоксы.
Вы можете отключить CSS ...
... в Firefox выбрав "Вид" > "Стиль страницы" > "Без стиля"
... в Chrome установив расширение "WebDeveloper" и выбрав "CSS" > "Отключить все CSS"
