Slicing and Dicing – Formatting user input

The question

The other day, a fellow wrote in to one of the PDF discussion forums to ask a question
about formatting user input in a PDF form. It was a fairly typical question. It went
something like:

Here is my problem: I am creating a form and in one field where the user enters a

validation number I want the field to automatically insert thedashes between the numbers,

for example: if a user inserts his numbers as 555555555 without dashes the custom Java

script would automatically insertthe dashes like this 5-55-55-5555. So what I am asking is

if someone could give me an example of the custom Java script that can do this.

It turns out there are many ways to solve the problem. First let’s just limit our

discussion to answering the question algorithmically. In other words, let’s just answer the

logic of the question at hand, and not worry about the messy details of trying to

idiot-proof things to the point where the user can’t screw things up beyond belief despite

our best efforts. Idiot-proofing forms is an important consideration, but for the moment,

let’s sidestep it.

The slice() function

The JavaScript String class has a slice() function that retrieves substrings based

on index positions that you supply as arguments. It is much easier to show how it

works than to describe in words how it works, so:


/// str = '555555555'; nine fives
/// we want to end up with 5-55-55-5555
formattedStr = str.slice(0,1) + '-' + 'str.slice(1,3) + '-' +

'str.slice(3,5) + '-' +

'str.slice(5);

This may not be the only or best way; it’s just one way.

As for idiot-proofing: that’s a whole book. My approach would be to strip all the

non-numeric user input out of this particular string before beginning to format it. I.e.,

reduce it to a known state of just plain numbers run together. Then start putting dashes

(hyphens) in, where you want them.

Tip

The real way to attack formatting of user input is, of course, to make heavy use of

JavaScript’s RegExp class. This is quite a complex subject and requires that you do

some heavy homework. I suggest that you buy David Flanagan’s JAVASCRIPT book

(O’Reilly) and also Jeffrey Friedl’s very fine MASTERING REGULAR EXPRESSIONS book

(also by O’Reilly) if syou are serious about learning to use regexes. In the meantime, open

the AForm.js file (which comes in the JavaScripts folder of your Acrobat distribution

suite) with a text editor and study the many examples of RegExp method usage in that file.
You’ll get some good ideas there of how things work.

You May Also Like

About the Author: Kas Thomas

Leave a Reply