Появление блока
Добрый день. Подскажите, как реализовать такое:
Есть форма с множеством чекбоксов по вертикали. Как организовать появление блока напротив того чекбокса, который активировали или деактивировали? |
Отслуживать событие "change" и выводить нужный блок.
|
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title></title>
</head>
<body>
<input type="checkbox">
<div class="box">Чекбокс1</div>
<input type="checkbox">
<div class="box">Чекбокс2</div>
<input type="checkbox">
<div class="box">Чекбокс3</div>
<input type="checkbox">
<div class="box">Чекбокс4</div>
</body>
<style>
input:not(:checked) + div {
display: none
}
input::checked + div {
display: block
}
</style>
</html>
|
Большое спасибо. Но у меня 1 блок на все чекбоксы.
|
Верстка типа такого:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title></title>
</head>
<form>
<input type="checkbox">
<input type="checkbox">
<input type="checkbox">
<input type="checkbox">
<div class="box">Блок с содержимым, изначально он скрыт</div>
</form>
</html>
|
если 2 будут отмечены, как тогда поступать?
|
Цитата:
|
Янковиц,
может input:focus:after будет достаточно? |
Янковиц,
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title></title>
<style type="text/css">
input:focus:after {
content: "Блок с содержимым, изначально он скрыт"
}
</style>
</head>
<form>
<input type="checkbox">
<input type="checkbox">
<input type="checkbox">
<input type="checkbox">
</form>
</html>
|
рони,
Это очень сильное колдунство. |
Это часть формы на ajax. При активации/деактивации чекбоксов содержимое блока меняется. Форма у меня по высоте почти на весь экран, и хотелось бы, чтобы при активации чекбокса, блок появлялся возле последнего измененного элемента
|
Я предполагаю, что необходимо просто вычислить высоту от верха родительского блока до последнего измененного элемента формы. А дальше уже css?
Прошу помощи у формучан |
Сделал так:
$('#filter').on('change', 'input:', function(){
var pos = $(this).position();
$('.filter-result').css({ 'margin-top' : pos.top });
});
Обычные чекбоксы отрабатывает на ура. Однако, с input type="hidden" какая-то беда. Вместо положенных 100-200 пикселей, он оступает 3 тысячи. Попробовал убрать type=hidden. Заработало, как надо. Осталось решить, как скрыть этот инпут. Display: none не помогает |
Попробовал добавить стилей без display: none
opacity: 0;
height: 0;
padding: 0;
margin: 0;
border: 0;
Сработало. Но это костыль какой-то, а не решение :( |
| Часовой пояс GMT +3, время: 21:12. |