【Labs】チェックボックスをラジオボタンのような動きにする
こんにちは(・∀・)
チェックボックスをラジオボタン風にしてみました。
Contents
チェックボックスのラジオボタン風
チェックボックスもラジオボタンのように複数選択できない動きにしたかったのでJavaScriptで作ってみました。
JavaScriptサンプル
3つのチェックボックスで作ってみました。チェックボックスを増やしたい場合はckboxを増やしてください。
HTML
<form id="form">
<label>1 <input type="checkbox" name="auth1"></label>
<label>2 <input type="checkbox" name="auth2"></label>
<label>3 <input type="checkbox" name="auth3"></label>
</form>
JavaScript
function checkbox(){
document.forms['form'].elements['auth1'].onclick=ckbox1;
document.forms['form'].elements['auth2'].onclick=ckbox2;
document.forms['form'].elements['auth3'].onclick=ckbox3;
}
function ckbox1(){
document.forms['form'].elements['auth2'].checked=false;
document.forms['form'].elements['auth3'].checked=false;
}
function ckbox2(){
document.forms['form'].elements['auth1'].checked=false;
document.forms['form'].elements['auth3'].checked=false;
}
function ckbox3(){
document.forms['form'].elements['auth1'].checked=false;
document.forms['form'].elements['auth2'].checked=false;
}
window.addEventListener('DOMContentLoaded',checkbox,false);
CSS
.tb-cell {
display: table;
width: 300px;
margin: 20px auto 40px auto;
text-align: left;
}
.tb-cell .row {
display: table-row;
}
.tb-cell .row .cell {
display: table-cell;
width: 300px;
padding: 20px 40px;
vertical-align: middle;
color: #fff;
background: #ccc;
text-align: center;
}
label {
padding: 10px;
}
Result
サンプルデモはこちら
スマホでのご確認はこちらをどうぞ
jQueryだと次のようになります。
jQueryサンプル
jQueryを使用するのでHTMLの<head>
内にjQuery 1.x snippetを読み込みます。
Google Hosted Libraries
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
HTML
<form id="form">
<label>1 <input type="checkbox"></label>
<label>2 <input type="checkbox"></label>
<label>3 <input type="checkbox"></label>
</form>
JavaScript
$(function(){
$('input').on('click',function(){
if ($(this).prop('checked')){
$('input').prop('checked',false);
$(this).prop('checked',true);
}
});
});
CSS
.tb-cell {
display: table;
width: 300px;
margin: 20px auto 40px auto;
text-align: left;
}
.tb-cell .row {
display: table-row;
}
.tb-cell .row .cell {
display: table-cell;
width: 300px;
padding: 20px 40px;
vertical-align: middle;
color: #fff;
background: #ccc;
text-align: center;
}
label {
padding: 10px;
}
Result
サンプルデモはこちら
スマホでのご確認はこちらをどうぞ