views:

855

answers:

4

I'm often conflicted about how to approach this problem in my applications. I've used any number of options including:

  • A generic multiselect - This is my least favorite and most rarely used option. I find the usability to be atrocious, a simple mis-click can screw up all your hard work.
  • An "autocomplete" solution - Downside: user must have spelling abilities to find the damn values they need, aren't exposed to ones they may not have in mind, and the potential backend performance of substring searching.
  • Two adjacent multiselects, with an add/remove button - Downsides: still "ugly" imo
  • Any number of fancy javascript solutions (http://livepipe.net/control/selectmultiple, http://loopj.com/2009/04/25/jquery-plugin-tokenizing-autocomplete-text-entry/, etc.)

I haven't been able to find any usability studies done on the best approach to this problem. Many of these alternate solutions are great when you're going from <10 elements to a hundred, but may break down completely when you are going from a hundred to a thousand.

What do you guys use? Why do you use it? Can you point me to usability case studies? Is there a "magic" solution that has yet to be discovered?

A: 

Have a look at Dojo Toolkit's DataGrid control. It's by far the most flexible and powerful, and supports multiple row selections. It also has accessibility features built in.

Wahnfrieden
Yea, I'm aware of Dojo DataGrid. That's quite a bit of overkill though. It's not really meant for the use I specified. Dojo is also a very heavyweight framework, with a nasty learning curve imo.
hobodave
I'm also looking for more than just "Try This" responses. I'd like to see discussion and explanation for suggestions, and how the tool would address my concerns, and the limitations of previously mentioned solutions.
hobodave
I see. Any solution right now will just be temporary anyway, because HTML5 adds a standardized data grid, which is what you would want to be using once that gets implemented.
Wahnfrieden
+2  A: 

I can't point you to any case studies, unfortunately, but what I can tell you is that I personally prefer large checkbox arrays in two-to-five column layouts. Sure, they take up a lot of space, but they are extremely precise and uncomplicated.

I think for any control - be it basic multiselect, double list, checkbox array, or any other solution - once you go over a certain threshold of items it's going to be challenging for the user no matter what.

Peter Bailey
A: 

The ExtJS library has some really good solutions for your issue. There a bunch of user extensions for neat-o combos and multi select boxes.

If you want a combo select list, you can add query searching and pagination, plus design the resulting drop-down using easy templating, like in this example:

http://extjs.com/deploy/dev/examples/form/forum-search.html

Here is a nice multiselect, in the style you seemed to describe:

*(main_site)/learn/Extension:Multiselect2

You can find all user extensions here:

*(main_site)/learn/Ext_Extensions

Plus, you can easily include it into an existing web page without alot of extra overhead. ExtJS's full stack is quite large, but to get only the JS files you need, they provide a nice builder tool to grab just those parts you need:

*(main_site)/products/extjs/build/

Just a warning: ExtJS has just released 3.0, but I'm not sure the user extensions have been upgraded. The "forum-search" was taken from a 3.0 example though, so it will work just fine with the latest and greatest.

(*) Apparently new users can only post one link...

Harmon
+7  A: 

My advice is don't use generic multiple select controls. I've been running User Experience Research for my whole career, and every single time I test a site with multiple select controls, it always turns out to cause problems for end users.

I did a post on this a while back: Multiple Select Controls Must Evolve or Die

Sounds like you knew this anyway, though. Your real question is "what do I use instead?" Well, to answer this question you have to work out whether the user's task leans towards recall or recognition.

(i) By recall, I mean the user knows what they want to pick before they have even seen the list. In this case, it's probably easiest for them if you offer an autocomplete tool (as used very effectively on facebook, for example). This solution is even better when the list of options is also impossibly long to present on a page (e.g. location names, etc).

(ii) Moving on to recognition - by this I mean a task that involves the user not knowing what they want to pick until they've seen the list of options. In this case, autocomplete doesn't give them any hints. An array of checkboxes would be much more helpful. If you can show them all at once, this is helpful to the user. Scrolling DIVs are more compact but they create a memory load for the user - i.e. once they've scrolled down, they have to remember which items they picked. This is particularly evident when users save a form and come back to it later.

So - thinking about your problem, do you need a solution for recall or recognition?

Harry