У меня есть два input
типа radio
. Для каждого input
существует корреспондирование label
с одним button
внутри.
Я ожидал, что нажатие кнопки будет иметь тот же эффект, что и щелчок на ярлыке: чтобы соответствующий вход был проверен.
Однако этого не происходит. Как показано в следующем фрагменте, зависание и нажатие кнопок вызывает соответствующие изменения стиля в переключателях, но действие щелчка не выбирает вход, даже если простые ярлыки работают как ожидалось.
Я проверил, что button
являются законными детьми label
s. Ярлыки позволяют разглашать содержание, а кнопки Разглашение содержимого, поэтому там все должно быть хорошо.
Я также попытался добавить прослушиватель событий к событиям щелчков обеих кнопок и внутри них, вызывающим event.preventDefault()
, чтобы убедиться, что поведение кнопки по умолчанию не препятствовало событию от пузырьков до метки, но безрезультатно, метка получает событие.
Так как это похоже на совместимость между браузерами (протестировано на Firefox 41a и Opera 31b/Chrome 44):
- Что происходит здесь, что мне не хватает?
- Как я могу реализовать это без обмана (например, стилю ярлыка, как если бы это была кнопка)?
<div>
<input type="radio" name="A" id="one" />
<label for="one">One</label>
<label for="one">
<button type="button">One</button>
</label>
<input type="radio" name="A" id="two" />
<label for="two">Two</label>
<label for="two">
<button type="button">Two</button>
</label>
</div>