Simple illustration de comment limiter le nombre de cases à cocher sélectionnées avec javascript (source) et de comment améliorer l'apparence avec bootstrap (source). Dans cet exemple on souhaite que l'utilisateur ne puisse sélectionner que deux cases au maximum (Note pour changer la limite il suffit d'éditer la ligne suivante: var limit = 2; dans le code complet ci-dessous).

Code complet:
<!DOCTYPE html><html lang="en"><head><!-- sources:https://bootsnipp.com/snippets/featured/checked-list-grouphttp://jsfiddle.net/vVxM2/--!><title>How to limit the number of selected checkboxes?</title><meta charset="utf-8"><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script><script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script><style>body {padding-top: 50px;background-color:#FFFFF;}</style></head><body><div class="container">Please, select up to two options: <br><br><div class="row"><div class="col-md-2"><div class="form-group "><span class="button-checkbox"><button type="button" class="btn btn-block" data-color="primary">Option 1</button><input type="checkbox" class="hidden" /></span></div></div></div><div class="row"><div class="col-md-2"><div class="form-group "><span class="button-checkbox"><button type="button" class="btn btn-block" data-color="primary">Option 2</button><input type="checkbox" class="hidden" /></span></div></div></div><div class="row"><div class="col-md-2"><div class="form-group "><span class="button-checkbox"><button type="button" class="btn btn-block" data-color="primary">Option 3</button><input type="checkbox" class="hidden" /></span></div></div></div><div class="row"><div class="col-md-2"><div class="form-group "><span class="button-checkbox"><button type="button" class="btn btn-block" data-color="primary">Option 4</button><input type="checkbox" class="hidden" /></span></div></div></div><div class="row"><div class="col-md-2"><div class="form-group "><span class="button-checkbox"><button type="button" class="btn btn-block" data-color="primary">Option 5</button><input type="checkbox" class="hidden" /></span></div></div></div><div class="row"><div class="col-md-2"><div class="form-group "><span class="button-checkbox"><button type="button" class="btn btn-block" data-color="primary">Option 6</button><input type="checkbox" class="hidden" /></span></div></div></div></div><script>$(function () {$('.button-checkbox').each(function () {// Settingsvar $widget = $(this),$button = $widget.find('button'),$checkbox = $widget.find('input:checkbox'),color = $button.data('color'),settings = {on: {icon: 'glyphicon glyphicon-check'},off: {icon: 'glyphicon glyphicon-unchecked'}};// Event Handlers$button.on('click', function () {//alert($checkbox.is(':checked'));var limit = 2;if (document.querySelectorAll('input[type="checkbox"]:checked').length >= limit ){if ($checkbox.is(':checked')) {$checkbox.prop('checked', !$checkbox.is(':checked'));$checkbox.triggerHandler('change');updateDisplay();}}else {$checkbox.prop('checked', !$checkbox.is(':checked'));$checkbox.triggerHandler('change');updateDisplay();}//$checkbox.prop('checked', !$checkbox.is(':checked'));//$checkbox.triggerHandler('change');//updateDisplay();});$checkbox.on('change', function () {updateDisplay();});// Actionsfunction updateDisplay() {var isChecked = $checkbox.is(':checked');// Set the button's state$button.data('state', (isChecked) ? "on" : "off");// Set the button's icon$button.find('.state-icon').removeClass().addClass('state-icon ' + settings[$button.data('state')].icon);// Update the button's colorif (isChecked) {$button.removeClass('btn-default').addClass('btn-' + color + ' active');}else {$button.removeClass('btn-' + color + ' active').addClass('btn-default');}}// Initializationfunction init() {updateDisplay();// Inject the icon if applicableif ($button.find('.state-icon').length == 0) {$button.prepend('<i class="state-icon ' +settings[$button.data('state')].icon + '"></i> ');}}init();});});</script></body></html>
Références
| Liens | Site |
|---|---|
| How to limit the number of selected checkboxes? | stackoverflow |
| jsfiddle | jsfiddle |
| bootsnipp | bootsnipp |
| getbootstrap | getbootstrap.com |
| bootstrap checkbox like button | bootsnipp.com |
| Count the number of checked checkboxes in HTML | stackoverflow |
| how to display variable value in alert box? | stackoverflow |
| .on change vs .on click [duplicate] | stackoverflow |
| jQuery checking a checkbox and triggering javascript onclick event | stackoverflow |
| .prop() | api.jquery.com |
| How do I check/uncheck a checkbox input or radio button? | learn.jquery.com |
| jQuery .prop('checked', false) does not work | stackoverflow |
| Check/Uncheck checkbox with JavaScript? | stackoverflow |
| -How to check whether a checkbox is checked in jQuery? | stackoverflow |
