A great way would be to have a local script that instantaneously adds the form fields for the user. That is just what Yahoo! has done – take a look at this screen shot:
By simply clicking “Attach More Files” a new row was instantly added – very slick! You might end up having all sorts of forms that have such a need. Possibly a shopping cart or some kind of form that allows people to special order items, or build items. What if they want more rows?
A couple of years ago I worked on just such a product. We were building a web application where there were multiple pages with all different kinds of forms where we needed to save space in order to keep the page manageable – but also to give the user the ability to add more fields when the needed it. The trick was to do it without writing 15 different unique functions!
So let’s assume we have our very own fields – something for adding contacts to an address book. And we’ll give them one row, but allow them to add as many as they want – like this: