I have a form which represents a book, the user enters the title, authors, publication year, etc... We have a feature which will auto-complete the entire book if the user enters enough info for us to find it.

My initial thought was to add a "Find" button next to the field the user is in when they have entered enough information, but one of my co-workers doesn't find this intuitive. And, I can see the problem. It is not clear the action is going to fill all of the fields, and it is not clear exactly what the button is operating on.

On the other side, if I add a button to the bottom of the form, with save and the other buttons, it will be less likely the user will notice it at the best time (early in the process of filling out the record). Though it would be more clear that it operates on the entire form.

3 Answers
3

Superficially this is akin to auto completing a postal address on a form, except that that process is familiar to quite a lot of people and it's usually specifically the postcode that is the key enabler to determining a small number of possible addresses from which the user selects the correct house number and the form is completed automatically. Example at alliescomputing.com

However, what you have here is not quite so focused on a single level of detail, and so the problem for the user becomes: "When is it ok for me to click on the button".

You don't want to let the user enter just 'e' and then allow a search because that could be millions of results. Neither do you want to force the user to enter more information than is actually required to find the book. The button has to be both 'useful' and contextually relevant.

How to solve this:

Indicate progress towards goal: In order not to make this a problem for the user, you have to give some indication of whether there is enough information entered so far to make the button useful, and this could be a progressive calculation each time the user moves from one field to the next. For example - calculate the number of results which match and display appropriate information, as follows:

Too many books - just show the number: If too many books match so far just display the number of books matching so that the user can see the amount of information is too vague. This will spur the user on to entering more accurate information if they can.

Less than 50 books - display number and provide access to a list: Once the number of results reaches something manageable, say between 6 and 50 results then still display the number of books and display a 'list possible matches' button to optionally browse those results and pick one to auto-complete the form - or depending on your context, maybe via the list you'll be able to by-pass the form and jump straight to the book?

A handful of books - list them automatically: If the number of results is low - say 5 or less, dispense with the button and just show the matching results anyway in a short list beside the form. Again - you may be able to dispense with form completion at that point.

No books - say so: If no results are found, indicate this clearly asap because the user is not going to get any further by entering more information.

Caveat: Much of this relies on being able to provide timely responsive feedback in situ, but if you can do this, the button problems go away.

I'd recommend faceted search if you're not using auto-complete. It's very familiar since lots of e-commerce sites use it and users understand how it works. No matter what the content is.

Quoting STEPHANIE LEMIEUX in his article "Designing for faceted search"

"Faceted search lets users refine or navigate a collection of information by using a number of discrete attributes – the so-called facets. A facet represents a specific perspective on content that is typically clearly bounded and mutually exclusive. The values within a facet can be a flat list that allows only one choice (e.g. a list of possible shoe sizes) or a hierarchical list that allow you to drill-down through multiple levels (e.g. product types, Computers > Laptops). The combination of all facets and values are often called a faceted taxonomy. These faceted values can be added directly to content as metadata or extracted
automatically using text mining software."

I would add a small strip underneath your form that lists possible matches based on the user's current input. The searching of possible matches would occur within an AJAX request after every short delay in the user's input, say 500ms or so.

The strip would display each possible match's cover and its title underneath it, like what Amazon does when it suggests related books. After the user clicks on one, the form will fill the rest of the details.