blog

bootstrap image

Bootstrap Radio Buttons as DataTable Filters

by

This is the first of a series of tutorials on using Bootstrap radio buttons in the wild to filter real datasets in concert with other commonly-used UI components like DataTables and jQuery UI.

Part 1: Converting a classic input radio to the Bootstrap label

Photo by Dawid Zawiła on UnsplashFiltering tables of data is the central task of many a business web-app. DataTables are searchable by default, but records often beg to be batch-filtered into several status modes like: current | archived | all.
Bootstrap Radio Buttons provide a nice, clean look, but many developers shy away from them due to unfamiliarity with their CSS label-based class manipulation and/or compatibility issues with other component libraries like jQuery UI.
Bootstrap checkbox and radio btn-groups work ‘out of the box’, but the simple activation of a default button decouples active button highlighting from the input tag checked state. In this case, the active label class must be handled manually, but the docs don’t explain how, so a stack-overflow of posts for dev-help ensues.

How To: Bootstrap-style radio btn-group-ies

  • a label tag must enclose each input tag
  • only the label is visible: text & style are defined by Bootstrap CSS – classic radio/checkbox control is not displayed
  • a div tag should enclose all markup (this is especially important when iterating loops)

In this JSFiddle Example, you can view the de-coupled (broken) Bootstrap state by uncommenting the first line of the toggleActive method.

var toggleActive = function(activate)
{
   //return; // uncomment this line to see the de-coupled (broken) Bootstrap state
   // de-activate any existing selection
   $('#record-filters').find('.btn-primary').each(function(index, element) {
      $(element).removeClass('active');
   });
   activate.addClass('active');
}

Avoid jQuery UI conflicts:

Anyone who has delved into the wealth of threads asking whether Bootstrap and jQuery UI can be used together will quickly find that there are a range of answers from ‘yes, absolutely’ to ‘no, absolutely not’. As usual, the truth lies between the extremes.
Here are a few simple rules-of-thumb to avoid conflicts between Bootstrap and jQuery UI:

  • include jQuery UI before Bootstrap
  • update to recent version of Bootstrap > 3.0.x
  • download a custom build of each library excluding widgets/modules, e.g.:
    • update standard Bootstrap to v3.3.6
    • update jQuery UI v1.11.4 with custom build excluding:
      • Effects (all components)
      • Widgets: Button, Dialog, and Spinner
  • if all else fails, consider using a pre-combined library like jquery-ui-bootstrap or ‘.widget.bridge’ plug-in

Parts 2 and 3 of this tutorial series will describe how to handle disabled radio-button state and how to co-ordinate dynamic sets of radio buttons on a single form.

+ more

Accurate Timing

Accurate Timing

In many tasks we need to do something at given intervals of time. The most obvious ways may not give you the best results. Time? Meh. The most basic tasks that don't have what you might call CPU-scale time requirements can be handled with the usual language and...

read more