<!DOCTYPE html> <html> <head> <title>Bootstrap Multiselect Tests</title> <meta name="robots" content="noindex, nofollow" /> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <meta name="copyright" content="David Stutz" /> <link rel="stylesheet" href="css/bootstrap-3.0.3.min.css" type="text/css"> <link rel="stylesheet" href="css/bootstrap-multiselect.css" type="text/css"> <script type="text/javascript" src="js/jquery-2.0.3.min.js"></script> <script type="text/javascript" src="js/bootstrap-3.0.3.min.js"></script> <script type="text/javascript" src="js/bootstrap-multiselect.js"></script> </head> <body> <a href="https://github.com/davidstutz/bootstrap-multiselect"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub"></a> <div class="container"> <div class="page-header"> <h1>Bootstrap Multiselect Tests</h1> </div> <table class="table table-striped table-hover"> <tbody> <tr id="test-build-tr" class="success"> <th>Test build</th> <td> <select id="test-build-select" multiple="multiple"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> </td> <td>Everything fine.</td> </tr> <tr id="test-build-optgroups-tr" class="success"> <th>Test build with optgroups</th> <td> <select id="test-build-optgroups-select" multiple="multiple"> <optgroup label="1,2"> <option value="1" selected="selected">1</option> <option value="2">2</option> </optgroup> <optgroup label="3,4,5"> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </optgroup> </select> </td> <td>Everything fine.</td> </tr> <tr id="test-build-selected-tr" class="success"> <th>Test build with selected options</th> <td> <select id="test-build-selected-select" multiple="multiple"> <option value="1" selected="selected">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> </td> <td>Everything fine.</td> </tr> <tr id="test-build-select-all-tr" class="success"> <th>Test build with select all</th> <td> <select id="test-build-select-all-select" multiple="multiple"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> </td> <td>Everything fine.</td> </tr> <tr id="test-build-filter-tr" class="success"> <th>Test build with filter</th> <td> <select id="test-build-filter-select" multiple="multiple"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> </td> <td>Everything fine.</td> </tr> <tr id="test-select-tr" class="success"> <th>Test select</th> <td> <select id="test-select-select" multiple="multiple"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> </td> <td>Everything fine.</td> </tr> <tr id="test-deselect-tr" class="success"> <th>Test deselect</th> <td> <select id="test-deselect-select" multiple="multiple"> <option value="1" selected="selected">1</option> <option value="2" selected="selected">2</option> <option value="3" selected="selected">3</option> <option value="4">4</option> <option value="5">5</option> </select> </td> <td>Everything fine.</td> </tr> <tr id="test-max-height-tr" class="success"> <th>Test max height</th> <td> <select id="test-max-height-select" multiple="multiple"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> </select> </td> <td>Everything fine.</td> </tr> </tbody> </table> </div> <script type="text/javascript"> $(document).ready(function() { // Test build of multiselect. var build = function(select, tr) { select.multiselect(); if (select.length === 0) { return 'Select not present anymore.'; } if (select.css('display') !== 'none') { return 'Select still visible (expected <code>display: none;</code>).'; } if ($('button.multiselect', tr).length === 0) { return 'Multiselect button not present.'; } if ($('option', select).length !== 5) { return 'Not all options present anymore.'; } if ($('ul.multiselect-container', tr).length === 0) { return 'Unordered list <code>.multiselect-container</code> not present.'; } if ($('ul.multiselect-container li', tr).length !== 5) { return 'No list item for each option present.'; } if ($('ul.multiselect-container li a', tr).length !== 5) { return 'Not all list items come with an anchor inside.'; } return false; }($('#test-build-select'), $('#test-build-tr')); if (build) { $('#test-build-tr').removeClass('success').addClass('danger'); $('#test-build-tr td').last().html(build); } // Test build with optgroups. var buildOptgroups = function(select, tr) { select.multiselect(); if ($('optgroup', select).length !== 2) { return 'Optgroups not present anymore (2 expected).'; } var first = $('optgroup', select).get(0); var second = $('optgroup', select).get(1); if ($('option', $(first)).length !== 2) { return 'First optgroup does not have 2 options.'; } if ($('option', $(second)).length !== 3) { return 'Second optgroup does not have 3 options.'; } // Check the corresponding labels. if ($('label.multiselect-group', tr).length !== 2) { return 'Expected 2 labels within the unordered list.'; } // Check labeling of groups. var firstLabel = $('label.multiselect-group', tr).get(0); var secondLabel = $('label.multiselect-group', tr).get(1); if ($(firstLabel).text() !== $(first).prop('label')) { return 'First group labeled incorrectly.'; } if ($(secondLabel).text() !== $(second).prop('label')) { return 'Second group labeled incorrectly.'; } return false; }($('#test-build-optgroups-select'), $('#test-build-optgroups-tr')); if (buildOptgroups) { $('#test-build-optgroups-tr').removeClass('success').addClass('danger'); $('#test-build-optgroups-tr td').last().html(build); } var buildSelected = function(select, tr ) { select.multiselect(); if ($('option:selected', select).length !== 1) { return 'Multiselect did not adopt selected options (1 selected option).'; } if ($('ul.multiselect-container li.active', tr).length !== 1) { return 'Corresponding list item not set to <code>.active</code>.'; } return false; }($('#test-build-selected-select'), $('#test-build-selected-tr')); if (buildSelected) { $('#test-build-selected-tr').removeClass('success').addClass('danger'); $('#test-build-selected-tr td').last().html(buildSelected); } var buildSelectAll = function(select, tr ) { var value = 'multiselect-select-all'; select.multiselect({ includeSelectAllOption: true, selectAllValue: value }); if ($('.multiselect-container input[value="' + value + '"]', tr).length !== 1) { return 'Expected exactly one input with value ' + value + ' as select all option.'; } return false; }($('#test-build-select-all-select'), $('#test-build-select-all-tr')); if (buildSelectAll) { $('#test-build-select-all-tr').removeClass('success').addClass('danger'); $('#test-build-select-all-tr td').last().html(buildSelectAll); } var buildFilter = function(select, tr) { select.multiselect({ enableFiltering: true }); if ($('.multiselect-search', tr).length !== 1) { return 'No search input present.'; } }($('#test-build-filter-select'), $('#test-build-filter-tr')); if (buildFilter) { $('#test-build-filter-tr').removeClass('success').addClass('danger'); $('#test-build-filter-tr td').last().html(buildFilter); } // Test select. var select = function(selectElement, tr) { selectElement.multiselect(); // Check for no selected options and no active li's. if ($('option:selected', selectElement).length > 0) { return 'There are already selected options (0 expected).'; } if ($('ul.multiselect-container li.active', tr).length > 0) { return 'There are already active list items (0 expected).'; } selectElement.multiselect('select', '1'); if ($('option:selected', selectElement).length !== 1) { return 'Just selected an option - option not marked selected.'; } if ($('ul.multiselect-container li.active', tr).length !== 1) { return 'Just selected an option - list item not set active.'; } if ($('option:selected', selectElement).first().val() !== '1') { return 'Wrong option selected.'; } selectElement.multiselect('select', ['2', '3']); if ($('option:selected', selectElement).length !== 3) { return 'Just selected two additional options - options not marked selected.'; } if ($('ul.multiselect-container li.active', tr).length !== 3) { return 'Just selected two additional options - list items not set active.'; } var second = $('option:selected', selectElement).get(1), third = $('option:selected', selectElement).get(2); if (second === undefined || second.length === 0) { return 'Could not get second option.'; } if (third === undefined || third.length === 0) { return 'Could not get third option.'; } if ($(second).val() !== '2' || $(third).val() !== '3') { return 'Wrong options selected.'; } return false; }($('#test-select-select'), $('#test-select-tr')); if (select) { $('#test-select-tr').removeClass('success').addClass('danger'); $('#test-select-tr td').last().html(select); } // Test deselect. var deselect = function(select, tr) { select.multiselect(); // Check for no selected options and no active li's. if ($('option:selected', select).length !== 3) { return 'There should be 3 options selected.'; } if ($('ul.multiselect-container li.active', tr).length !== 3) { return 'There should be 3 list items set to active.'; } select.multiselect('deselect', '1'); if ($('option:selected', select).length !== 2) { return 'Just deselected an option - option not marked deselected.'; } if ($('ul.multiselect-container li.active', tr).length !== 2) { return 'Just deselected an option - list item not set inactive.'; } if ($('option:selected', select).first().val() !== '2') { return 'Wrong option deselected.'; } select.multiselect('deselect', ['2', '3']); if ($('option:selected', select).length > 0) { return 'Just deselected two additional options - options not marked deselected.'; } if ($('ul.multiselect-container li.active', tr).length > 0) { return 'Just deselected two additional options - list items not set unactive.'; } return false; }($('#test-deselect-select'), $('#test-deselect-tr')); if (deselect) { $('#test-deselect-tr').removeClass('success').addClass('danger'); $('#test-deselect-tr td').last().html(deselect); } var maxHeight = function(select, tr) { select.multiselect({ maxHeight: 100 }); var height = $('.multiselect-container', tr).css('max-height'); if (height !== '100px') { return 'Max height not set correctly (set: ' + height + ').'; } return false; }($('#test-max-height-select'), $('#test-max-height-tr')); if (maxHeight) { $('#test-max-height-tr').removeClass('success').addClass('danger'); $('#test-max-height-tr td').last().html(maxHeight); } }); </script> </body> </html>