Tuesday, May 21, 2024
 Popular · Latest · Hot · Upcoming
103
rated 0 times [  105] [ 2]  / answers: 1 / hits: 17461  / 12 Years ago, sat, june 9, 2012, 12:00:00

I am making checkboxes/radio/toggle groups for Bootstrap, but I failed with checkboxes - can you help me to make them work?



HTML:



<form id=edit-accounts class=form-horizontal method=post>
<fieldset>

<div class=control-group>
<label class=control-label>Radio Group:</label>
<div class=controls btn-group data-toggle=buttons-radio data-toggle-name=radio_group>
<button type=button value=1 class=btn data-toggle=button>first</button>
<button type=button value=2 class=btn data-toggle=button>second</button>
<button type=button value=3 class=btn data-toggle=button>third</button>
</div>
<input type=hidden name=radio_group value=1 />
</div>

<div class=control-group>
<label class=control-label>Checkbox Group:</label>
<div class=controls btn-group data-toggle=buttons-checkbox data-toggle-name=checkbox_group>
<button type=button value=1 class=btn data-toggle=button>js</button>
<button type=button value=2 class=btn data-toggle=button>fiddle</button>
<button type=button value=3 class=btn data-toggle=button>alpha</button>
</div>
<input type=hidden name=checkbox_group value=1 />
</div>

<div class=control-group>
<label class=control-label>Toggle:</label>
<div class=controls btn-group data-toggle=button data-toggle-name=button_group>
<button type=button value=1 class=btn data-toggle=button>on/off</button>
</div>
<input type=hidden name=button_group value=1 />
</div>
</fieldset>
</form>​


JavaScript:



$(function () {
$('div.btn-group[data-toggle-name=*]').each(function () {
var form = $(this).parents('form').eq(0);
var name = $(this).attr('data-toggle-name');
var hidden = $('input[name=' + name + ']', form);
var type = $(this).attr('data-toggle');
var check = [];
$('button', $(this)).each(function () {
$(this).live('click', function () {
if($(this).val() == hidden.val()) {
switch(type) {
case 'button':
$(this).removeClass('active');
hidden.val(0);
break;
case 'buttons-checkbox':
$(this).removeClass('active');
break;
default:
hidden.val($(this).val());
}
} else {
switch(type) {
case 'button':
$(this).addClass('active');
hidden.val(1);
break;
case 'buttons-checkbox':
$(this).addClass('active');
break;
default:
hidden.val($(this).val());
}
}
});
if($(this).val() == hidden.val()) $(this).addClass('active');
});
});
});​


working prototype


More From » checkbox

 Answers
81

This is how i rewrote your code to make it work well with the check box group:



jQuery(function($) {
$('div.btn-group[data-toggle-name]').each(function(){
var group = $(this);
var form = group.parents('form').eq(0);
var name = $(this).attr('data-toggle-name');
var hidden = $('input[name=' + name + ']', form);
var type = group.attr('data-toggle');
var check = (hidden.val() != '') ? hidden.val().split(',') : [];
$('button', group).each(function() {
var button = $(this);
button.live('click', function() {
switch(type) {
case 'buttons-checkbox':
if(check.indexOf(button.val()) == -1){
button.addClass('active');
check.push(button.val());
}else{
check.splice(check.indexOf(button.val()),1);
button.removeClass('active');
}
hidden.val(check.toString());
break;
case 'button':
if(button.val() == hidden.val()) {
button.removeClass('active');
hidden.val(0);
} else {
button.addClass('active');
hidden.val(1);
}
break;
default:
hidden.val(button.val());
break;
}
});
switch(type) {
case 'buttons-checkbox':
for (i=0;i<check.length;i++) {
if(button.val() == check[i]) {
button.addClass('active');
}
}
break;
default:
if(button.val() == hidden.val()) {
button.addClass('active');
}
break;
}

});
});
});

[#85023] Friday, June 8, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
daja

Total Points: 407
Total Questions: 103
Total Answers: 103

Location: Ghana
Member since Sun, Mar 27, 2022
2 Years ago
daja questions
Tue, Dec 21, 21, 00:00, 2 Years ago
Thu, Apr 23, 20, 00:00, 4 Years ago
Fri, Sep 6, 19, 00:00, 5 Years ago
Tue, Jul 23, 19, 00:00, 5 Years ago
;