Killing the Cancel Button on Forms for Good
uxmovement.com
uxmovement.com
On the other hand, Cancel buttons on configuration dialogs in non-web contexts are great: they relieve the stress burden of playing with settings. This is something that freaks me out every time I end up in System Preferences on OS X: I have no way to undo what I just did. I have to hunt around and fiddle to put things back the way they were. I much prefer the way Windows does it with OK and Cancel: opening up a dialog is like starting a transaction, and OK and Cancel become Commit and Rollback.
There are some places where it's appropriate - but IMHO they should never be named "OK" and "Cancel". One of the better things we've done to make our lives easier is the trend to verb our dialog buttons, and "OK/Cancel" is in gross violation of that.
OK to what? Cancel to what? People simply don't read dialogs (or, your dialog text is just not as understandable as you think it is).
"Are you sure you want to foo?" should be followed by "Foo" and "Don't Foo", not "OK" and "Cancel".
Wording it as [Foo] and [Don't Foo] is a good start, but sometimes it should be worded as [Foo] and [Bar] where Bar is opposite of Foo. For example, [Quit] and [Continue], or [Leave] and [Stay].
EDIT: an example of the wrong way to do it: "Press OK to stay on the current page, or Cancel to receive 50% off!" http://failblog.org/2010/10/08/epic-fail-photos-cancel-fail/
quit job or coninue job would mean more than ok or cancel.
I don't need to confirm every command I issue. That is just madness. I like zsh confirming when I type `rm foo/*`. I don't like a preference dialog confirming that I really meant to change some colour (OK and Apply don't pop up but they are confirmations nonetheless).
The better thing to do is to do away with modality and to provide live updates of any setting users make. That way, users can see the effects of each preference change as they make it (as with Mac OS X inspectors and the Office ribbon). 'commit' buttons have their role, but they should be the exception, for actions that the user cannot easily revert. Also, they never should be labeled with generic phrases such as 'OK'.
It's hard to understand how uncomfortable it feels when you're used to having this safety net, and it's taken away. It makes changing the preferences (for most applications, not just System Preferences) a much more cautious affair, in my experience. Even something as simple as changing the default font used in an application - once changed, it can take a lot of hunting to get it back the way it was.
Also, the default font for an application is an appearance preference.
There's also another aspect to settings. Many settings are logically tree-shaped: certain settings only apply if a dependent setting is in effect. A very simple example: Firefox's popup blocker has some settings - the Exceptions. But the Exceptions only apply if the popup blocker is actually enabled. You can't fully explore the configuration space of an application most of the time without running into these things. But you don't want to have committed to changing these settings just to explore the configuration space. The Cancel option on the dialog lets you explore without commitment.
Now, you won't get an argument from me that the Apply button is useful. I think preference dialogs shouldn't be modal where reasonable, and that changes should be previewed across the application. That's not always the case in Windows, and it should be better. But on topic here is the Cancel button, and that's what's missing on OS X, and where I believe Windows has it trumped.
The reason for exploring the configuration space? Are you serious? In order to discover what is possible to be configured, of course! Take another example. I'm interested in protecting my privacy, but not at the cost of too much convenience. So I'm interested in clearing some history when my browser shuts down; but not things like cookies or saved passwords. In order to discover what options are available here, in Firefox I need to enable the "Clear history when Firefox closes" option in order to discover how configurable it is. But I don't know how complicated things are going to get when I click on that Settings... button, and I certainly don't want my cookies etc. cleared prematurely, but I can comfortably stride forth into it, because I know I can hit cancel at any time and back out.
I also suspect that the Cancel button is just masking another problem, that settings dialogs get nested so much that you forget what you changed.
It's not a second confirmation: it's an ability to undo what you just did.
E.g turning on Bluetooth – either the user wants to turn in on, or not. Sure, the Apply / Cancel removes the possibility of someone clicking around hitting the "On" checkbox. But I think it's better to optimize for regular use, and not have a Apply button when you just checked to apply.
If I spend time filling out a form, why would I want to clear it? If I make an error, I'll correct it - not start anew. When I see a "clear form" button nowadays it's a big red flag that the owner of the site is still stuck in the 90s usabilitywise.
I also tend to use a Cancel button if there's one, or a navigation link to exit the process because I'll be sure to avoid a "resubmit POST values?" alert if I were to click 'Back'.
This is an excellent point.
There are two situations where Cancel buttons are proper.... The first situation is confirmation windows.... The second situation is progress bars.
Would this suggest that Cancel buttons are never appropriate on basic HTML / mobile websites? This seems like an extreme rule to me, but maybe it's good advice.
A substantial portion of both users and AJAX apps still don't use/support the back button effectively. And when there's a form overlaying the content, using a cancel button to get rid of it does make a fair amount of intuitive sense...
I distinctly remember pressing Cancel while loading a TF2 server, with maybe 80% filled, but it loads anyway, because it had actually finished loading, just didn't update the progress bar.
You make a good point, though. Maybe basic HTML just has Discard to stay consistent with standard.
big difference.
There's no input type=cancel. only input type=reset
http://www.w3.org/TR/html401/sgml/dtd.html#InputType
And resetting is sometimes desirable, say, for a real time map filter form. where you can play with the controls, reset, play some more, reset... you get the idea.
Now, for forms that are presented to the user empty, as most are, the reset button with a 'cancel' label, is just plain dumb. yes.