Programming instructions

112 Lesson 4 Validating Data to Enforce Business Rules
Using other client-side script to reduce edits on the server
If you were interested in moving as much of the business rule logic to the client as
possible, you might use other client-side scripting languages, such as JavaScript. By
exploiting ColdFusion form tags, you moved most of the responsibility for the business
rule checking from the server to the client. This section explains how to migrate
cross-field business rules to the client using JavaScript.
Web browsers can execute scripts based on events triggered on the current page. One of
the most popular scripting languages is JavaScript. ColdFusion Form tags include an
onValidate attribute that lets you specify your own JavaScript function for custom
validation.
The JavaScript form object, input object, and input object value are passed to the
specified JavaScript function. The function returns True if validation succeeds and False
otherwise. The
onValidate and validate attributes are mutually exclusive.
Recall the Compass Travel New Trip business rule 6:
The trip departure and return dates must be specified for each trip.
All trip dates must be valid future dates. Departure date must precede return date.
One reason this rule is a good candidate for a JavaScript function is that the test for a
future date cannot be done using the ColdFusion form tags attributes such as
validate
and
range. The following JavaScript function (isitFutureDate) tests whether a date is
a valid future date.
function isitFutureDate(oForm, oTag, dateString) {
/*
function isitFutureDate
parameters: oForm, oTag, dateString
returns: boolean
oForm is the CFForm object. All onvalidate calls pass this argument.
This function ignores it.
oTag is the CFForm current tag object. All onvalidate calls pass this
argument. This function ignores it.
dateString is the value of the current tag object. It should be a date passed
as a string in the following
format: MM/DD/YYYY. This means that months and days require leading zeros!!
Returns true if the date passed is greater than today's date
Returns false if the date passed is NOT greater than todays
date.
*/
// Check to make sure the date is zero filled with 4 digit year and
//therefore 10 characters long.
if (dateString.length != 10)
return false;
var now = new Date();
var today = new Date(now.getYear(),now.getMonth(),now.getDate());
The trip departure and return dates must be specified for each trip.
All trip dates must be valid future dates. Departure date must precede return date.