Carol,

It sounded to me like you wanted maximum flexibility for date entries (admirable but 
difficult to achieve, I believe), but if the below solution is satisfactory, here's a 
function I wrote to validate dates.  It displays an error message if the date is not 
entered in "MM/DD/YYYY" format; it includes extra, optional logic to compare the date 
to the system date and displays a warning message when appropriate.

Also, it uses another function named "Trim", which I have also included after the code 
for function "ValidDate".
Here's an example call to the function if the date should be "Before" the system date:
ValidDate("Before", "Date of Birth");

function ValidDate(BeforeAfter, DateName)
{
// This function validates dates entered in MMDDYYYY format and compares them to the 
system date if the first argument is included.
// Arguments:  BeforeAfter specifies whether the current date should be either 
"Before" or "After" the system date; DateName is the name of the current date field 
(for use in comparison to the system date)--if omitted, the date name defaults to 
"Date".
// Note:  The arguments should be omitted if the date should not be compared to the 
system date.
var nWarning = 1;
event.value = Trim (event.value, true, true);
if (event.value != "")
        {       
        event.value = util.printx("99/99/9999", event.value);
        var result = AFParseDateEx(event.value, "mm/dd/yyyy");
        if (result == null)
                {app.alert("Invalid Date: Re-enter in MMDDYYYY or MM/DD/YYYY format.");
                event.rc = false;
                return false;}
        // Else date is valid
        else
                {
                // Compare entered date to system date.
                var SysDate = new Date;
                SysDate = AFParseDateEx(SysDate, "mm/dd/yyyy");
                // If the current date should be after the system date
                if (BeforeAfter == "After")
                        {
                        // If the current date is before the system date
                        if (result.valueOf() < SysDate.valueOf())
                                {
                                // If the name of the current date is not provided
                                if (DateName == undefined)
                                        DateName = "Date";
                                app.alert("Warning:  " + DateName + " is before the 
system date.", nWarning);
                                }
                        }
                // Else if the current date should not be after the system date
                // Note: An "else-if" rather than just an "else" is used in case the 
BeforeAfter argument is not provided (in which case no comparison is made to the 
system date).
                else
                        // If the current date should be before the system date
                        if (BeforeAfter == "Before")
                                // If the current date is after the system date
                                if (result.valueOf() > SysDate.valueOf())
                                        {
                                        // If the name of the current date is not 
provided
                                        if (DateName == undefined)
                                                DateName = "Date";
                                        app.alert("Warning:  " + DateName + " is after 
the system date.", nWarning);
                                        }
                return true;
                }
        }
// Else date is blank or null
else
        return false;
}

// Trim leading and trailing spaces; set L = true to trim leading spaces and set T = 
true to trim trailing spaces.
function Trim(s, L, T) {

// Remove any leading spaces
if (L) s = s.replace(/^[ ]+/, "");

// Remove any trailing spaces
if (T) s = s.replace(/[ ]+$/, "");

return s;
}


-----Original Message-----
From:   [EMAIL PROTECTED] on behalf of McDowell, Carol
Sent:   Tue 3/30/2004 9:01 AM
To:     '[EMAIL PROTECTED]'
Cc:     
Subject:        RE: [PDF-Forms] Need Custom Calculation Script to format date

PDF-Forms is a service provided by PDFzone.com | http://www.pdfzone.com/
__________________________________________________________________

This works for me!  Thanks so much for your help.

-----Original Message-----
From: J Bealer [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, March 30, 2004 8:27 AM
To: [EMAIL PROTECTED]
Subject: RE: [PDF-Forms] Need Custom Calculation Script to format date



PDF-Forms is a service provided by PDFzone.com | http://www.pdfzone.com/
__________________________________________________________________

Carol,
Using Acrobat's own date validation, you could try something like this, 
substituting your own alerts, in the Custom Validate script of your date 
field :

if(event.value)
{
        var DateOK = AFParseDateEx(event.value,"mm/dd/yyyy");
        if(DateOK != null)
        {
                app.alert("date ok");
                event.value = util.printd("mm/dd/yyyy", DateOK);
        }
        else
        {
                event.value = "";
                        app.alert("date not ok");
        }
}




>From: "McDowell, Carol" <[EMAIL PROTECTED]>
>Reply-To: [EMAIL PROTECTED]
>To: "'[EMAIL PROTECTED]'" <[EMAIL PROTECTED]>
>Subject: [PDF-Forms] Need Custom Calculation Script to format date
>Date: Mon, 29 Mar 2004 11:16:42 -0500
>
>
>PDF-Forms is a service provided by PDFzone.com | 
>http://www.pdfzone.com/ 
>__________________________________________________________________
>
>I'm a beginner with using javascript in forms.  I'd appreciate help 
>with
>the
>following problem:
>
>I have a date field where the user will type in a date value.  I want 
>to
>use
>a custom calculation script where no matter what the user types in for the
>date, it will reformat it to mm/dd/yyyy.  For example, if the user types
>"03/29/04" or "March 29, 2004", I want the value to change to "03/29/2004"
>automatically.
>
>I don't want to use the format field category because when the user 
>doesn't type the date with this format, an invalid date/time warning 
>pops up that says to make sure the date/time exists and that the format
should match the
>format mm/dd/yyyy.   I'd rather write my own warning in the custom
>calculation script if the user types in anything other than a date.
>
>Thanks.
>
>To change your subscription: 
>http://www.pdfzone.com/discussions/lists-pdfforms.html
>

_________________________________________________________________
Get rid of annoying pop-up ads with the new MSN Toolbar - FREE! 
http://toolbar.msn.com/go/onm00200414ave/direct/01/


To change your subscription:
http://www.pdfzone.com/discussions/lists-pdfforms.html

To change your subscription:
http://www.pdfzone.com/discussions/lists-pdfforms.html



<<winmail.dat>>

Reply via email to