tags:

views:

138

answers:

5

My application has a requirement such that I have to display a huge number of HTML input textfields (maybe 2,000 text fields). The fields can be logically grouped into sections and the sections are repetitive. What is the best way to display it to the user so that they can enter data with minimum clicks?

A: 

Paged format, like a survey? You could then use SESSION to store the input for each page and retrieve the prior answers when the user switch between them. Another method is to use ajax to navigate between different . I think the issue is not the number of clips, but 2000 textfields is going to look scary on just one single page.

Extrakun
-1 on the Session. These have the natural behaviour of 'timing' out.Assuming the user has/will navigate all of the questions (to find the ones they need/want to fill in). Take the following scenario: The user starts at page 1, gets to page x, it is lunch time or a meeting is called (or nature calls). The user leaves their desk. they return after a certain time. Your session has timed out, all the input values of the user are lost. => angry user, will never use the app again.Solution: Use a database or keep all the answers in hidden fields or javascript array.
Rudi
@Rudi: I think you're confusing concepts. There's no reason a session can't be stored in a database, and there's no reason that you can't extend the default time of a session to prevent timing out after an hour. A session is more robust than a javascript array or hidden fields in the case of a browser crash anyway, and it's certainly less work than managing thousands of hidden fields on each page. Definitely not worth a -1.
zombat
+1  A: 

I'm not sure what kind of users you have that would willingly sit through 2,000 text fields, but if it's a requirement, then you do what you have to. :)

You say it can be grouped into sections and the sections are repetitive. I'm not sure what parts are repetitive, but managing the sections carefully seems of utmost importance. Some sort of Javascript hiding/showing seems likely to be a big help... I think I would choose JQuery's Accordion effect or something similar.

You could add Tab key events to each section in order to assist with navigation and open a new section once an old one was complete. Adding change events to the fields might assist with that as well.

If you need to break the form up across multiple pages, then you'll probably want to utilize AJAX to load new sections/pages and store the submitted data into a session until the user is done.

zombat
A: 

With a minimum of clicks you say? Well, then just put them all into one form and let the user scroll. But I wouldn't do that. I would not aim for a minimum of clicks but for convenient portions of displayed information and some more clicks. So I would group the elements into subforms and navigate through them or you could group them into tabs or accordeon groups.

tharkun
A: 

Depending on the format of the required answer, there are two ways:

  1. If the answer is of a known length or the answer is one of a few choices, you may auto-advance the cursor w/some javascript/jquery. For instance, if you're expecting phone numbers, when the person enters the 10th digit in the box, move the cursor to the next box.
  2. If you don't know and you can't apply (1), the quickest way is to encourage users to tab their way through the boxes.

Speaking of tabs, if the boxes can be logically grouped, you could create tabs and have the users page their way through the questions. This will create more clicks, but will improve user experience.

But holy crap, 2k text boxes on one page is crazy!

Jason
A: 

I work on a similar product, and perhaps the number one thing would be to make sure that tabbing between fields works logically and quickly. The people who do data entry on this type of thing are lightning fast and fairly mindless (I don't mean that in a pejorative sense), typing in numbers from a log or printout without looking at a screen.

Apart from that, we implement tabs (like tabbed browsing) on the page, group boxes, and other things like "dynamic lists" which is like a data grid of text boxes that the user can add and delete rows from client-side.

Coxy