ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/staticperl/perl/lib/CGI/eg/javascript.cgi
Revision: 1.1
Committed: Thu Jun 30 14:27:10 2005 UTC (21 years, 3 months ago) by root
Branch: MAIN
CVS Tags: PERL-5-8-7, HEAD
Branch point for: PERL
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 #!/usr/local/bin/perl
2    
3     # This script illustrates how to use JavaScript to validate fill-out
4     # forms.
5     use CGI qw(:standard);
6    
7     # Here's the javascript code that we include in the document.
8     $JSCRIPT=<<EOF;
9     // validate that the user is the right age. Return
10     // false to prevent the form from being submitted.
11     function validateForm() {
12     var today = new Date();
13     var birthday = validateDate(document.form1.birthdate);
14     if (birthday == 0) {
15     document.form1.birthdate.focus()
16     document.form1.birthdate.select();
17     return false;
18     }
19     var milliseconds = today.getTime()-birthday;
20     var years = milliseconds/(1000 * 60 * 60 * 24 * 365.25);
21     if ((years > 20) || (years < 5)) {
22     alert("You must be between the ages of 5 and 20 to submit this form");
23     document.form1.birthdate.focus();
24     document.form1.birthdate.select();
25     return false;
26     }
27     // Since we've calculated the age in years already,
28     // we might as well send it up to our CGI script.
29     document.form1.age.value=Math.floor(years);
30     return true;
31     }
32    
33     // make sure that the contents of the supplied
34     // field contain a valid date.
35     function validateDate(element) {
36     var date = Date.parse(element.value);
37     if (0 == date) {
38     alert("Please enter date in format MMM DD, YY");
39     element.focus();
40     element.select();
41     }
42     return date;
43     }
44    
45     // Compliments, compliments
46     function doPraise(element) {
47     if (element.checked) {
48     self.status=element.value + " is an excellent choice!";
49     return true;
50     } else {
51     return false;
52     }
53     }
54    
55     function checkColor(element) {
56     var color = element.options[element.selectedIndex].text;
57     if (color == "blonde") {
58     if (confirm("Is it true that blondes have more fun?"))
59     alert("Darn. That leaves me out.");
60     } else
61     alert(color + " is a fine choice!");
62     }
63     EOF
64     ;
65    
66     # here's where the execution begins
67     print header;
68     print start_html(-title=>'Personal Profile',-script=>$JSCRIPT);
69    
70     print h1("Big Brother Wants to Know All About You"),
71     strong("Note: "),"This page uses JavaScript and requires ",
72     "Netscape 2.0 or higher to do anything special.";
73    
74     &print_prompt();
75     print hr;
76     &print_response() if param;
77     print end_html;
78    
79     sub print_prompt {
80     print start_form(-name=>'form1',
81     -onSubmit=>"return validateForm()"),"\n";
82     print "Birthdate (e.g. Jan 3, 1972): ",
83     textfield(-name=>'birthdate',
84     -onBlur=>"validateDate(this)"),"<p>\n";
85     print "Sex: ",radio_group(-name=>'gender',
86     -value=>[qw/male female/],
87     -onClick=>"doPraise(this)"),"<p>\n";
88     print "Hair color: ",popup_menu(-name=>'color',
89     -value=>[qw/brunette blonde red gray/],
90     -default=>'red',
91     -onChange=>"checkColor(this)"),"<p>\n";
92     print hidden(-name=>'age',-value=>0);
93     print submit();
94     print end_form;
95     }
96    
97     sub print_response {
98     import_names('Q');
99     print h2("Your profile"),
100     "You claim to be a ",b($Q::age)," year old ",b($Q::color,$Q::gender),".",
101     "You should be ashamed of yourself for lying so ",
102     "blatantly to big brother!",
103     hr;
104     }
105