Say I have a button for a complex state machine which can be disabled for a number of reasons. I feel if I run some business logic
CanActionBeDoneNow() and simply disable the button if it returns false, the user may be confused as to why he/she can't click it. I see several improvements to this
- Leave a help-link next to the button which explains why it can't be clicked
- Let the button be clickable, but show an error message when clicked with an explanation to why the action can't be performed.
- Actively display the reasons as to why it can't be clicked - either directly under the button or, if applicable, at other visual elements related to the reason* (like in a form where some validation rules are broken).
*) If that was the case 100% of the time, I would go with this solution. But it isn't.
Do you have any input on this? Maybe links to web sites which have some examples on this implemented? Do you agree that the user should be presented with the reason at any point, or should it be left to some passive documentation?