tags:

views:

18

answers:

1

Say for example I am getting a range of integers from a user:

Generate between nnn and nnn widgets.

Yes, most users will ensure that the first number is equal to or less than the second number:

Generate between 3 and 7 widgets.

But then there's that user, who wants to enter this data "back to front";

Generate between 7 and 3 widgets.

Do you quietly switch the fields around when the user clicks OK/Apply so, in the example above, you change the range of 7 to 3 back to 3 to 7 in the GUI? This might not be so practical on a web form where the user enters some data and then submits the form never to see it again but I'm thinking more in terms of a desktop application's settings page where the user's input is saved and subsequently viewed and edited again by the user.

Is it more important to try and educate users to enter a range that "makes sense" via error/alert messages, or quietly cajole their entries into the shape an application is expecting?

I suspect the "cajoling option" is more preferable, but could this "hey the program messed with my data!" approach be a problem for users?

I am currently writing an application that has a handful of these user-configurable ranges so I'm very interested to follow the general consensus of the SO experts.

+1  A: 

If the user enters data incorrectly you shouldn't assume a particular pattern of error and automatically correct it. Either report the error to the user and ask them to correct it or suggest a correction that they can approve. In your example, what if the user intended to type 7 and 13 but simply mistyped. If you changed it to 3 and 7 you've entered incorrect data without the user's knowledge. I'd probably do the simple thing and use a visual alert when incorrect data is entered (but before it's actually submitted) and refuse to accept incorrect data, returning an error if it is submitted incorrectly.

tvanfosson
Aha, I hadn't considered the mistype scenario. Of course my auto "correction" in that case would be confusing (and wrong) for the user.
Sprogz