I have a group of check boxes that are controlled by an "All" check box. I am proposing the behavior of the "All" check box and its dependent check boxes as below:

  1. Default Condition: "All" is checked and Enabled. The dependent check boxes are all checked and Disabled.
  2. Uncheck "All" : Enable all dependents but NOT clear them.
  3. Check "All" : The dependent check boxes are all checked and Disabled.
  4. Check/Uncheck the dependents: They do not affect the "All" or any other check box.

This is slightly different and a simpler implementation than what is suggested by YUI, as described here:


Does this seem like reasonable behaviour?

  • This sounds more like you want a user experience of a "All" vs "Custom" radio-button choice, with the "Custom" choice then revealing all the checkboxes. – Erics Oct 26 '12 at 14:45

Checking "ALL" typically is just a convenient way to select all the corresponding entities/checkboxes. So when that parent checkbox is checked, I don't think disabling the children checkboxes is a good idea.

For example, if there are 20 checkboxes and I want to select only 18, I'd check the "ALL" checkbox first, which will check all the 20 boxes for me and then I'll uncheck the 2 that I don't want. Thus, it only takes 3 clicks as opposed to 18 separate clicks.

So I wouldn't disable the individual checkboxes when the "ALL" checkbox is checked.

  • I agree, it's more efficient and possibly an established convention (established convention trumps all, IMO). This is how yahoo mail works. Doesn't gmail work that way also? – obelia Oct 25 '12 at 21:51
  • @obelia Yes, Gmail also works in this way. – Alexis Brion Oct 26 '12 at 14:22

In many situations the user will want to switch back and forth between Check All and checking a subset of checkboxes. If that is the case, then do not automatically check all the checkboxes when Check All is selected because that erases the work the user will want to use later. Disabling the individual checkboxes is sufficient for most users to understand that their settings don’t apply. This also provides the users with a preview of what they would get if they switch off Check All, and now with a single click, the users can undo or revert Check All.

In any case, the Check All function should probably not be handled a check box control. It’s weird when unchecking leads to enabling. If you don’t use disabling, then it’s even worse, because now you should check all the individual check boxes when Check All is selected. This means checking one check box checks a bunch of others, but check boxes are not supposed to execute commands such as editing attributes. Then when the user unchecks one of the individual check boxes, the Check All check box must change, so again, a check box is affecting the settings of another control.

The solution is to use radio buttons to select between All and Custom (or whatever), where selecting Custom enables the individual checkboxes. This allows you to put the Custom radio button close to the individual checkboxes (perhaps surrounded by a border) so it’s clear what will enable the checkboxes. It also makes it easy to add a None option, which may be a good idea in your case.

An alternative is to treat Check All as a command and make it a command button, which are typically used to change the attributes or characteristics of something. Because a command button has no lasting state, it’s not affected by setting the individual check boxes. In addition to the All button, you probably want a Reset button that reverts the individual check boxes to what they were before selecting All. A Clear button unchecks all checkboxes.


I agree with Girish regarding the disabling of child checkboxes.

Here are a few more comments on the proposed interaction.

'1.Default Condition: "All" is checked and Enabled. The dependent check boxes are all checked and Disabled.' Whether the All checkbox is checked or unchecked as a default depends on the purpose of the items in the list. Here are two examples in which the default value of All differs.
Example 1: The page content is a list of results from a query. The checkboxes represent facets of the results. All of the results are displayed which means all of the values of the facets are checked and the All checkbox is checked.
Example 2: The page content is a list of items on which the user can act (e.g., delete, move, copy). There is a checkbox next to each item. The user can act on more than one item at a time by selecting more than one checkbox. In this situation, none of the items are checked by default which means the All checkbox is not checked by default.

'5. The All checkbox displays a third state to show that one or more checkboxes in the list are checked.'
That was not in the original question. I added that one. It's based on the recommendations in both the MS and Apple UX guidelines.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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