Щебетать Кнопка загрузки кнопки управления радио кнопки/флажки
Я пытаюсь использовать группу кнопок Twitter Bootstrap в качестве фактического набора элементов управления формой. По умолчанию эти группы кнопок могут быть созданы как радиокнопка или группа флажков, но поскольку они используют элемент <button>
, они фактически не могут использоваться как переключатель или флажок.
В моих исследованиях я нашел этот сайт, который использует CSS, чтобы заставить эти кнопки начальной загрузки управлять переключателями и флажками. Единственная проблема заключается в том, что они используют довольно современные функции CSS для работы, и поэтому требуют работы IE9 или выше.
Я хотел бы расширить поддержку IE8. Есть ли другое (возможно, контролируемое JS) решение, которое будет предлагать те же функции, что и вышеупомянутая ссылка, без крутых требований CSS?
Спасибо за ваше время.
Ответы
Ответ 1
Bootstrap 3 имеет "собственное" решение...
Теперь для этой проблемы существует "истинное" решение Bootstrap, которое, похоже, отлично работает и в старых браузерах. Вот как это выглядит:
// get selection
$('.colors input[type=radio]').on('change', function() {
console.log(this.value);
});
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<div class="btn-group colors" data-toggle="buttons">
<label class="btn btn-primary active">
<input type="radio" name="options" value="red" autocomplete="off" checked> Red
</label>
<label class="btn btn-primary">
<input type="radio" name="options" value="orange" autocomplete="off"> Orange
</label>
<label class="btn btn-primary">
<input type="radio" name="options" value="yellow" autocomplete="off"> Yellow
</label>
</div>
<!-- jQuery and Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
Ответ 2
Bootstrap 2
Попробуйте эту скрипку
HTML:
<div class="btn-group" data-toggle="buttons-radio">
<button type="button" class="btn btn-primary">Left</button>
<button type="button" class="btn btn-primary">Middle</button>
<button type="button" class="btn btn-primary">Right</button>
</div>
<input type="hidden" id="buttonvalue"/>
Script:
$(".btn-group button").click(function () {
$("#buttonvalue").val($(this).text());
});
затем получите buttonvalue
серверную сторону
Ответ 3
С Bootstrap 3.2 поместите скрытый ввод в середину контейнера группы кнопок. Вместо текстового содержимого мы берем значение поля данных.
<div id="test" class="btn-group checkit" data-toggle="buttons-radio">
<button type="button" data-value="1" class="btn btn-default active">Yes</button>
<input type='hidden' name="testfield" value='1'>
<button type="button" data-value="0" class="btn btn-default ">No</button>
</div>
Теперь вставьте небольшой фрагмент javascript в часть загрузки вашего шаблона.
$('.checkit .btn').click(function() {
$(this).parent().find('input').val($(this).data("value"));
});
Поэтому вам нужно только добавить .checkit в группу кнопок и вставить скрытое поле ввода.
С помощью бутстрапа 3.2 вы можете напрямую использовать группы кнопок с радио- или checkbox-входами
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-default">
<input type="radio" name="options" id="option1" value="1" /> Yes
</label>
<label class="btn btn-default">
<input type="radio" name="options" id="option2" value="0" /> No
</label>
<label class="btn btn-default">
<input type="radio" name="options" id="option3" value="42" /> Whatever
</label>
</div>
Смотрите здесь:
http://jsfiddle.net/DHoeschen/gmxr45hh/1/
Ответ 4
Вы можете использовать скрытые элементы формы и javascript, чтобы использовать состояние кнопки для запуска состояний элемента формы.
Ответ 5
Решение только для CSS:
HTML:
<div class="btn-group">
<label class="btn btn-primary"><input type="checkbox"><span>Button 1</span></label>
<label class="btn btn-primary"><input type="checkbox"><span>Button 2</span></label>
</div>
SCSS/МЕНЬШЕ:
label.btn {
margin-bottom: 0;
padding: 0;
overflow: hidden;
span {
display: block;
padding: 10px 15px;
}
input[type=checkbox] {
display: none;
}
input:checked + span {
display: block;
color: #fff;
background-color: #285e8e;
}
}
JSfiddle здесь