Oftentimes when designing applications, certain functionality needs to be present in some situations but not in others. The traditional way of dealing with this on the desktop is to enable the controls that provide access to that functionality when it is available and to disable them when it is not. For example, consider the following application snippet where the “Merge” function only applies when the user has selected two records.
Unfortunately, disabling controls without explanation is often a pathway to confusing your users. The problem is that disabling a control does not, by itself, provide the user with any indication of why the control is disabled. It may seem obvious to us, the system’s designers/developers, but to a new user experimenting with the application’s functions the reason the control is disabled may be quite opaque, especially if the function is far away from the means of enabling it (e.g., with application menu items). Time and again in user testing, I’ve watched participants fumble when a function they were expecting to be able to perform is inexplicably disabled.
But if disabling controls is confusing, what can we do instead? It heavily depends on what your design is trying to achieve, but here are some ideas:
- If the user must select additional content before the operation makes sense, as in the example above, consider keeping the control enabled but asking the user to choose the second item in a pop-up box. Consider including help text in the box informing the user that they could have multi-selected list items using control-click to avoid the dialog.
- If the user needs to do something more complicated, consider leaving the control enabled but providing help text explaining how to get the function to work when the user hovers over or clicks on the control. Remember that modal dialog boxes are bad, so consider using something less intrusive like a callout to provide this information.
If anyone has other ideas on how to avoid the disabled state, please do email them to me or post them in the comments.