A Better Multi-Select Widget: Open Source from Uzilla, LLC
Do your users know how to control click? Are you sure?
Table of Contents
Uzilla, LLC presents a more usable way of allowing users to select multiple responses from a set of 5-40 options on the web.
In a recent usability test with non-information workers in an intranet application, we discovered that none of the users successfully selected multiple responses when presented in a HTML select element with multiple selection enabled. They simply did not know that control click existed.
To solve this problem, a new form of multi-select was crafted. In addition to creating an affordance for multiple selection, this system also provides better system status information.
View Demo: Without sequence and autocollapse, or In Edit Mode, or in the default sequence and autocollapse mode.
The affordance and system status goals have already been described. For optimal performance, a sequencing option was also constructed for initial fillout tasks. The system uses principles of inobtrusive DHTML and reads the status from the checkboxes, allowing web application developers to specify checked states in normal ways.
Edit vs Create: Supporting Sequential Activity
If the task is not an edit, evidenced by no pre-selected checkboxes, and the inSequence flag is in it's default true state, the first div will be auto-expanded on load. Clicking "close" on the first container will automatically expand the second and so on.
If the user begins to edit in a non-sequential way, the auto sequencing is turned off.
Conserving Screen Real Estate and Visual Attention
With the auto-collapse flag in it's default true state, clicking edit on a container while another container is open auto-collapses the first open container.
Download the example and customize the checkbox groups.
The system uses a naming convention for divs and a bit of the UI coded into each checkbox grouping. There are two key divs required for each select: options_name and summary_name.
<input type="checkbox" ...>
<input type="checkbox" ...>
<input type="button" value="Close" onClick="saveOptions(this.parentNode);">
<div id="summary_name"> </div>
For each set of options, the two divs should be constructed with a unique name following the options_ and summary_ string in the id fields.
// CUSTOMIZABLE VALUES
var multis = "methods,datasources,lifecycle";
var isEdit = false; // Populated with the count of checked boxes at init
var inSequence = false; // Set to false to disable auto-sequential expansion
var autoCollapse = false; // Only allow one container to be expanded at a time
The system has been tested successfully on IE 6.0, Safari, and Mozilla and uses W3C compliant methods. Feedback to andy at uzilla dot net if you discover any incompatibilities.
This code is governed by the Mozilla Public License 1.1. This essentially just requires that if you improve the system, you offer the improvements back to the community.
- 06.25.04: Extra closing script tag removed from demos.
- 06.24.04: Released
About Uzilla, LLC
Uzilla, LLC aims to help make a more usable web. Other free tools from Uzilla include the fallout visualizer, tools for card sorting and web site heuristic review. The company's flagship product is a suite for web usability testing.
Other Open-source DHTML Interface Widgets