64

This question already has an answer here:

The user starts an action, and, afterwards, the system determines that some special condition is present which warrants further confirmation from the user:

mockup

download bmml source – Wireframes created with Balsamiq Mockups

In the example above, "No" would do exactly the same as "Cancel". Should the "Cancel" button still be present?

My reason not to include it: It would be redundant and users would wonder about the difference between "No" and "Cancel".

My reason to include it: It allows an "easy way out" for the user: "I don't want to read, think about, and understand the evil scary message box; please just pretend I didn't start the action at all."

Note: I do appreciate alternative suggestions (such as a completely different message box design), but I would also appreciate feedback on which one of those two options is preferred (for example, in situations where the UI library offers limited options).

marked as duplicate by Joel Tebbett, Matt Obee, JonW Sep 19 '17 at 13:57

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • 31
    Would this dialog have a red [X] in the top right corner? that's the "preferred" way of offering a redundant cancel "safety net" as you're describing. As a button with text, it still requires reading/thinking, whereas the red X can be reflexive. – J. Dimeo Sep 11 '17 at 11:03
  • 29
    "Cancel" in dialog boxes always left me confused, ever since Windows 95. What am I cancelling? The dialog box? The save operation? I prefer explicit text/answers anytime. – phresnel Sep 11 '17 at 11:30
  • 31
    I can cancel the original fizbuzzling? Great, let me do that! – Hurkyl Sep 11 '17 at 12:12
  • 22
    I would definitely read the second dialog as "yes - fibronicate me a secondary foo, no - do not fibronicate, but still fizzbuzz the primary foo, or cancel - please neither fibronicate, nor fizzbuzz any foos, I like my foos just the way they are" – Joseph Rogers Sep 11 '17 at 14:44
  • 9
    What will the Escape key do? – PCARR Sep 11 '17 at 19:45

10 Answers 10

135

Don't use No with Cancel. They somewhat do the same functionality.

I would suggest you go a step ahead and be accurate with the options you provide. We click Yes/No many times without reading the message in modal dialog - particularly, when we are installing applications, or facing some warning/alert popups. As a responsible designer/developer; you want your users to make a informed decision.

Since, No and Cancel somewhat run the same function. Use cancel instead of No.

mockup

download bmml source – Wireframes created with Balsamiq Mockups

  • 33
    If I saw this dialog I would expect the "Cancel" button to actually cancel the action that has already been undertaken. – user42005 Sep 11 '17 at 14:30
  • 33
    How about a "Do Nothing" button/link instead of "Cancel"? – Dan Sep 11 '17 at 14:57
  • 27
    I upvoted this, so don't get me wrong, but why in this case would you use cancel instead of NO? Natural language would imply that if the question is do you want to fabricate a foo? answers would be yes, fabricate foo or no, don't fabricate another, (or just no), nobody says cancel to a direct question which explains the comments about ambiguity of meaning) – Devin Sep 11 '17 at 18:38
  • 10
    Based on the OP's description of the workflow, it sounds like 'cancel' should be more along the lines of 'discard my changes' to distinguish the fact that you can't personally do anything about the fact the foo has been fizzbuzzed. You can either continue your action with that new knowledge, or abandon your work up to this point. – Kapler Sep 11 '17 at 19:13
  • 7
    @Devin I think Cancel is used because of the reason OP gives: It allows an "easy way out" for the user: "I don't want to read, think about, and understand the evil scary message box; please just pretend I didn't start the action at all." And I think that's a very good reason. Cancel implies nothing will happen. If the button said No, then the user would have to read the question to know that nothing will happen. An other reason to use Cancel instead of No is given in the answer of Kamil. – Paul Sep 12 '17 at 23:02
43

My reading of that prompt indicates the following meaning (approximately):

I see you are trying to [fizzbuzz the main Foo]. 
That isn't recommended because [the main foo has already been fizzbuzzed].
I suggest instead [frobnicate a secondary foo].

When I see a prompt formatted like that, my expectations for the buttons Yes, No, and Cancel are:

  • Yes: Follow the suggested action
  • No: Ignore the suggestion and continue with my original action
  • Cancel: Do nothing and return to the state before attempting this action

Assuming that your description of "No and Cancel do the same thing" means that both do as I described for Cancel, I would say use Yes and Cancel if customizing the text of the buttons isn't possible as in DPS's example, or if the only two-button option is Yes/No then I would prefer clearly calling out the effects of each button in the prompt, such as "The main Foo has already been fizzbuzzed. Click 'Yes' to frobnicate a secondary Foo, or 'No' to cancel."

  • May I ask why you think: No: Fizzbuzz the main Foo anyway, the message says it has already been done with no indication of you being able to undo it. – EpicKip Sep 13 '17 at 9:28
  • 2
    I agree, I too read it as: Yes: Frobnicate a secondary Foo No: Don't frobnicate a secondary Foo (but leave the FizzBuzzed one as is) Cancel: You know what? Forget everything, and go back to what it was, so undo the first one, too. – mrjink Sep 13 '17 at 9:38
  • 1
    @EpicKip The format of this prompt most closely reminds me of the one that appears in e.g. Microsoft Word if you try to quit with unsaved changes. When I see "You are trying to X, would you like to do recommended action Y first/instead?" then the options would be "Yes: Do Y before/instead of X" "No: Do X regardless" and "Cancel: I don't wish to do X or Y". This may be more of a Windows/Microsoft convention than a universal one, and is definitely inferior to buttons which clearly state their action, but it is quite a familiar pattern to me. – Kamil Drakari Sep 13 '17 at 13:16
  • @KamilDrakari But not doing x or y wouldn't mean undo an action, but that might just be my interpretation. Thanks for your view – EpicKip Sep 13 '17 at 13:19
  • @EpicKip Perhaps we have different understandings of how the prompt occurred? Where I would expect to see that prompt is, the Main Foo is FizzBuzzed from the start, then I attempt to FizzBuzz it and get the prompt. Cancel would leave the Main Foo still FizzBuzzed. – Kamil Drakari Sep 13 '17 at 13:22
11

If the actions do exactly the same you should reduce the actions to one. Adding another wording for the same action confuses the user, increases completion time since he will most likely re-read the dialog, think about what he did before that makes the system offer him both actions and at the end will raise frustration.

I definitely prefer the dialog box with two instead of three options.

  • 3
    @Heinzi In an either/or of the two dialogs, where No and Cancel do the same thing you don't want to complicate it – just have Yes/No. To me, the only time Yes/No/Cancel makes sense is at the start of an operation, where some optional (possibly recommended) additional step could be performed: Yes = perform both original operation and the optional one; No = only perform the original operation; Cancel = do neither (I'm not in a position to decide). – TripeHound Sep 11 '17 at 11:28
10

Yes, you can and should offer a redundant way of canceling the dialog, but no, it should not be a redundant button with text.

I agree with this:

It allows an "easy way out" for the user: "I don't want to read, think about, and understand the evil scary message box; please just pretend I didn't start the action at all."

However, as it's shown, the user does have to read and think about it, because all 3 buttons are presented equally and require reading/thinking to figure out which does what (at which point the user would be confused by the difference between no or cancel, as Pectoralis pointed out). A red [x] button, however, is instantly recognizable and doesn't require any thought.

You always should support 3 ways of canceling modal dialogs (in either a web or desktop app):

  • An explicit "No" or "Cancel" button as you've shown
  • A red [x] (ideally, native to the operating system)
  • Supporting the Esc key to cancel
3

As @DPS noticed, I also opt for informing Your users the exact action the button does and the visual distinction between the two. These should be helpful (especially the first link):

When choosing between primary and secondary actions, visual distinctions are a useful method for helping people make good choices.

Should this distinction be more prominent like the button vs. link in Option A or a bit more subtle like the two different colored buttons in Option C? Option A fared a bit better in time to completion, average number of fixations, and average total length of fixations indicating people completed the form faster but not by much.

The need for these distinctions becomes moot, of course, when no secondary actions are present. Make sure you really need each secondary action on a form and don’t add them indiscriminately.

https://www.lukew.com/ff/entry.asp?571

https://uxplanet.org/primary-secondary-action-buttons-c16df9b36150 http://uxmovement.com/buttons/visual-weight-of-primary-and-secondary-action-buttons/ https://www.smashingmagazine.com/2016/11/a-quick-guide-for-designing-better-buttons/

2

Given freedom to design the dialog however you want, @DPS's answer is great. But you also ask about how to handle this in cases where the UI library provides restricted options for dialog button choices.

In this case, I would suggest that rather than "Yes/No" a better choice would be an "OK/Cancel" dialog:

mockup

download bmml source – Wireframes created with Balsamiq Mockups

This provides a clear indication that if you press Cancel, nothing at all will happen, whereas with a Yes/No option, it is ambiguous whether No would still do something without frobnicating the secondary foo or not. (And with Yes/No/Cancel there's an incorrect implication that "No" and "Cancel" do different things, leading to the conclusion that "No" must presumably attempt to continue with the original foo in some manner).

  • It's very clear what Continue-ing will do, but what does OK-ing do? – Ben Voigt Sep 15 '17 at 22:49
  • @BenVoigt - I see your point, but I think it's generally understand that "OK" in this context means "continue with the operation as it's described". Yes, it's better to use a term that is tied to what will actually happen when you press the button, but in many cases "OK" is about the best we've got. Like the OP apparently does, I've worked in UI frameworks before now that only give you a choice of "OK", "Yes/No", "Yes/No/Cancel", "OK/Cancel", and if you're extremely lucky "Abort/Retry/Ignore" (!), and fitting your text to the choices is usually doable, and doesn't give terrible results. – Jules Sep 16 '17 at 1:11
1

In usability means, you never should have different action triggers that make the same effect with different labels or descriptions.

  • 2
    It would be great if you could provide references or details for your answer so that the OP and the other users can understand the logic behind it – Shreyas Tripathy Sep 12 '17 at 9:15
  • 2
    In Windows, you can close a typical window by double-clicking the menu button, single-clicking the menu button and navigating to "Exit", single-clicking the red X in the top-right, or right-clicking its entry on the taskbar and selecting "Close window". Different triggers, same effect, and that's not counting keyboard or touch actions. – Jon of All Trades Sep 12 '17 at 19:54
1

Consider displaying the notification in a dismissible way, i.e. a modal dialog or a notification banner. This way you can use a standard X button to dismiss the notification, with a button to Frobnicate a Secondary Item within the notification itself.

0

Three options makes things even more confusing, not less.

If you need an easy way out, perhaps this dialogue box should be removed entirely.

Make an obvious explicit icon appear after foo fabbing that is easily seen and acted upon by the user rather than interrupting their workflow with something they might not need. An animation would draw attention.

0

"Standard" dialog buttons have always been problematic. One problem is that their sense is often ambiguous, but the other problem is that they can make choices seem clearer than they really are.

Arguably, when an exceptional circumstance arises, the user should be confused, until they have understood the question. Making the dialog simpler and more routine is just downplaying the amount of attention you require from the user.

If you are restricted to "yes", "no", "OK" and "cancel", I would suggest that "yes" / "no" is the most likely to get the user to read the question (which should be clearly worded). Many users, seeing a dialog with "cancel" as one option, will reflexively click the other button to keep going.

Ideally, you'd use "wordy" buttons/hyperlinks to guarantee the user is making a deliberate and informed choice. Of course, the other moral here is not to overuse dialog boxes, because users stop paying attention.

Not the answer you're looking for? Browse other questions tagged or ask your own question.