What is the best way to deal with input elements that are currently not available, or locked to a default value, e.g. a "state" field that is only relevant to some countries, a button for functionality that the current user is not authorized to use, or a dropdown menu entry that is only relevant when the user has selected something?
There are 3 ways I've seen to deal with this, and all of them seem unsatisfying to me:
- Locking the elements - can confuse and annoy users because it conveys no information about why they're locked. This question was actually prompted by me wanting to install east asian font support on Windows XP, finding the relevant checkbox in the control panel locked, and wondering about it for days before realizing that I was on a non-admin account.
- Hiding the elements - Even more confusing and annoying when users see screenshots in a tutorial that differs from what they see - or are told by a helpdesk guy to click on a button that doesn't exist for them.
- Showing an error message - best chance of conveying useful information, but might also be quite annoying when you have no visual cue about what you can and can't do.
So are there any good alternatives (ideally with real life examples where they're used)? Rules of thumb when to use what? Strong arguments why to use locking anyway? It does seem to be the most commonly used, but I suspect that may only be so because everyone's copying it without thought.