From my personal perspective, what is important in online forms is achieving a balance between the three elements of:
- usability (ease with which users can fill out the form),
- economy (cost of the form and data processing for the originator),
- error prevention/minimisation.
On paper forms (which have been widely used for a /lot/ longer than a decade), having individual boxes for characters (eg multiple character-sized boxes joined together for a telephone number) is economical (doesn’t cost much more than having one box), reduces error (as the boxes restrict what sort of answers can be provided) and is user friendly (because the boxes provide a visual cue to the user about what sort of information they should enter). In online forms, this approach continues to be economical but can be less effective at reducing error (depending on tabbing rules) and, I believe, less user friendly (eg more clicks, more for a screen reader to churn through etc).
I think situations such as these have come about from a nave belief that paper forms can be directly translated into an online environment, when research actually shows that the two mediums are significantly different and so require tailored approaches. We need to think critically about how every question is best asked in the given medium.
Given the three-way tradeoff, for an online form I personally would choose a single box for telephone numbers which is parsed. This approach has greatest usability and is moderately economical and except when a form that has to work in more than a handful of countries, parsing a telephone number should be quite achievable. Conversely, having separate boxes is likely to reduce usability without a major reduction in economy (as the number still has to be parsed to some extent to ensure data quality).
When it comes to addresses, the situation is a little more complex. It is true that people write addresses correctly on mail every day. However, I believe the context cues here are very strong: envelopes are for addresses (and stamps) only; if you are sending something in the mail it has to be addressed a certain way so that it gets there etc. The context is very different on an online form: online forms are used to collect lots of different types of information; there are lots of different reasons an address is needed (ie not just shipping) etc. This loss of context could lead to reduced data quality, and of course many people don’t even address physical envelopes correctly. In my experience in Australia, postcode is forgotten regularly and this may even be why Australia Post introduced postcode squares pre printed on envelopes: as a kind of visual cue.
As anyone checking out Frank’s Compulsive Guide to Postal Addresses (http://www.columbia.edu/kermit/postal.html) would appreciate, writing code to accurately parse an international address is very complicated. Given that no matter how the data is entered, we should be confirming it with users before processing, I worry that the user might have to go through the confirm-fix-confirm-fix cycle multiple times, while the parser tries to get it right, which would definitely reduce usability. Conversely, if additional cues mean everything is entered right the first time, there is less work/frustration for the user, so a little more upfront work for the user doesn’t necessarily equate to worse user experience.
For these reasons I would personally have a single box for each of the following items: street address; suburb/town; state/province; postcode and country, with maximum widths set for each and adjustments made if that form is only used by a subset of the global population.
End my two cents.