views:

277

answers:

4

I need to make form which will be used to rank the students in a class - i.e. best student is rank 1, next best is rank 2, worst student is rank N (where N = number of students in the class, in this case generally less than 10). What's the best (easiest to use, most accessible) interface for doing this, with the caveat that it needs to work even if Javascript isn't available?

I was thinking of using radio buttons, something like:

Student   Rank 1    Rank 2    Rank 3
Joe        ()1       ()2       ()3
Julie      ()1       ()2       ()3
John       ()1       ()2       ()3

The problem, of course, is that radio buttons can only belong to one group: either each row is a group, or each column is a group, but not both. So no matter what, I'll have to do validation server-side to ensure either that each rank is used only once (if I group by row) or that each student is assigned only one rank (if I group by column).

My question is, which is more understandable to the average user? Grouping by rows, so that each student can have only one ranking but it's hard to tell if a ranking has already been used? Or grouping by columns, so that each rank can only be assigned once, but it's hard to tell if a particular student has been ranked twice or not at all?

Alternatively, would a different interface be better? Dropdown list with possible rankings? Textboxes? Something else I'm not thinking of?

A: 

This is a user interface issue. Best is to test the different alternatives with real, and un-coached, test subjects. See the web articles by Jacob Nelson. (sp).

Remember that even if you don't have javascript, you have your server computer. So I'd make simple dropdowns, and have your server-side verify that the answers are logically consistent.

Also, you can and should detect whether js is available, and if it is, then you can make a smoother client-side experience

Added: there are also good books about running low cost UI testing. You don't need a million dollar lab. Eg Don't Make Me Think! by Steve Krug

The only real way to determine UI answers is to try them with test subjects.

Larry K
+1  A: 

I would use a dropdown list by rank. Then it's easy to see who's been chosen already, and it's intuitive to see the current ranking. You could use javascript to ensure there are no duplicate choices and validate on the server side too when javascript isn't available.

Rank 1       [Joe]

Rank 2       [Julie]

Rank 3       [John]

Or, even better, use jQueryUI Sortable with a dropdown fallback when javascript isn't available.

ghoppe
Thank you! This does seem to be the most intuitive scriptless solution, and it has the added advantage of somewhat resembling the old paper form that we're replacing with an online version.
Martha
A: 

To my mind the most intuitive interface for this would be simple list with links to move each student up or down.

  Rank 1  ^ Joe   v
  Rank 2  ^ Julie v
  Rank 3  ^ John  v

And so on. This wouldn't be too hard to do either serverside or through javascript and it would guarantee that no two users could be at the same rank by mistake in a very transparent way.

Slightly more work for you as the creator of the page but a big advantage to your users.

glenatron
I like this solution for a small number of students, but it may get tedious if your list is very long.
ghoppe
maybe adjusment arrows combined with a couple of other options - renumber the order by typing in a number or "move to top / move to bottom" big arrows.
Mikeb
I can't come up with any sort of workable fallback for this if Javascript isn't available. The number of times the form would need to be submitted just to reorder a list of 10 names is astronomical.
Martha
@ghoppe - the original question states "generally less than 10" so I was figuring on that. @Mikeb - the move-to-bottom/top arrows are a good idea.@Martha - a lot of postbacks indeed, but they have chosen not to have javascript on and the work has to be done somewhere so to my mind it's not a biggie. I think in the modern world the absence of javascript is typically more of a hypothetical than genuine problem in most cases anyways.
glenatron
A: 

If you are using exclusive rankings (i.e., there can only be one #1, one #2, etc.) I would suggest that the most intuitive way for users to understand is, unfortunately, drag and drop. Having each row contain a radio button group that is as long as the number of rows would be confusing, and you would still need code to maintain the uniqueness of each rank.

Robusto
I think that Netflix's queue management page is a good example of this done well, from a UI perspective.
Mikeb