John Brinkman on form design

Disable your form in older versions of Reader

When designing forms that require newer versions of Reader, you may want to be intentional about the experience users get when they open the form in older versions of Reader. Today if you target a form for Reader X and open it in Reader 9, you get this dialog:

After you’ve dismissed the message, Reader goes on to display the form as best it can.

The problem is that "as best it can" could lead to a very poor experience. If you have functionality in your form that relies on a more recent Reader, then in all likelihood, your form is broken. This could manifest itself in any number of ways. e.g. Validations not firing correctly or the form not displaying correctly.

As a form author, you’d prefer to prevent the user with an old version of Reader from having any interaction with the form. No experience is better than a bad experience. The topic for today is a design pattern to author a tailored experience for the user with an older Reader.

Design Pattern

There are probably several ways this can be done. I’ve chosen to add a version-checking subform below the root. This version-checking subform has the following properties:

Contains content that warns the user that their version of Reader is not new enough

Points the user to the reader update page

Has a form field with the required Reader version number

Has an initialization script that compares the Reader version to the required version

If the Reader version is not new enough, the initialization script will remove instances of other subforms below the root and make sure the version checking subform is visible.

If the Reader version is new enough, the initialization script will add instances of other subforms below the root and hide the version checking subform

For this script to be effective, the other subforms below the root must be defined with occurence settings where the minimum is zero and the initial number is also zero: