Re: JavaScript into PERL CGI coding help
by "Jan Morell" <janman(at)n-jcenter.com>
|
Date: |
Fri, 21 Jul 2000 12:39:13 -0400 |
To: |
<hwg-languages(at)hwg.org>, "Gary E. Daniels" <gdaniels(at)ais.net> |
References: |
ais |
|
todo: View
Thread,
Original
|
|
Hi Gary,
whether or not you need print statements in Perl depends on how you are
printing the page. If you are using:
print<<END;
Your page
END
then all you need to do is escape the reserved characters in the Javascript
portion of the file just as you would have to escape a "@" in an e-mail
address.
In particular, the "&" character. Put a "\" before each instance such as \&
Jan
----- Original Message -----
From: "Gary E. Daniels" <gdaniels(at)ais.net>
To: <hwg-languages(at)hwg.org>
Sent: Friday, July 21, 2000 10:57 AM
Subject: JavaScript into PERL CGI coding help
> I have a JavaScript that uses cookies to retain input from a form so it
can
> re-populate the form fields or another form with the same name and fields.
> This works fine when the forms are HTML. My problem is getting it to work
> when the JavaScript is pasted into a PERL CGI program that creates the
HTML
> form on-the-fly. I get Internal Server Errors and I suspect that I need
to
> add some additional PERL coding such as Print statements, newline
> characters, quotes, etc. The full JavaScript appears below with a sample
> HTML form. Thanks in advance.
>
>
> <HTML>
> <title>Your title goes here!</title>
>
> <BODY bgcolor="white">
>
>
> <!-- Cut-N-Paste JavaScript from ISN Toolbox
> Copyright 1998, Infohiway, Inc. Restricted use is hereby
> granted (commercial and personal OK) so long as this code
> is not *directly* sold and the copyright notice is buried
> somewhere deep in your HTML document. A link to our site
> http://www.infohiway.com is always appreciated of course,
> but is absolutely and positively not necessary. ;-) -->
> <SCRIPT language="JavaScript">
> <!--
> var never = new Date()
> never.setTime(never.getTime() + 2000*24*60*60*1000);
>
> // name is a string of the name of your cookie
> // value is the value corresponding to name
> function SetCookie(name, value) {
> var expString = "; expires=" + never.toGMTString();
> document.cookie = name + "=" + escape(value) + expString;
> }
>
> // returns value of cookie or null if cookie does not exist
> function GetCookie(name) {
> var result = null;
> var myCookie = " " + document.cookie + ";";
> var searchName = " " + name + "=";
> var startOfCookie = myCookie.indexOf(searchName);
> var endOfCookie;
> if (startOfCookie != -1) {
> startOfCookie += searchName.length; // skip past name of cookie
> endOfCookie = myCookie.indexOf(";", startOfCookie);
> result = unescape(myCookie.substring(startOfCookie, endOfCookie));
> }
> return result;
> }
>
> use_cookies = "unsure";
>
> function saveValue(element) {
> if (document.images && use_cookies == "unsure")
> use_cookies = (confirm("Will you allow the values you enter into this
form "
> +"to be stored as cookies so that those values will be pre-filled the
next "
> +"time you return to this page?") ? "yes":"no");
> if (document.images && use_cookies == "yes") {
> if ((element.type == "text")
> || (element.type == "password")
> || (element.type == "textarea")
> || (element.type == "radio")) {
> val = element.value;
> } else if (element.type.indexOf("select") != -1) {
> val = "";
> for(k=0;k<element.length;k++)
> if (element.options[k].selected)
> val += k+" ";
> } else if (element.type == "checkbox") {
> val = element.checked;
> }
> SetCookie("memory_"+element.form.name+"_"+element.name,val);
> }
> }
>
> function storedValues() {
> if (document.images) { // only do it in JavaScript 1.1 browsers
> for (i=0;i<document.forms.length;i++) {
> for (j=0;j<document.forms[i].elements.length; j++) {
> cookie_name = "memory_"+document.forms[i].name+"_"
> +document.forms[i].elements[j].name;
> val = GetCookie(cookie_name);
> if (val) {
> if ((document.forms[i].elements[j].type == "text")
> || (document.forms[i].elements[j].type == "password")
> || (document.forms[i].elements[j].type == "textarea")) {
> document.forms[i].elements[j].value = val;
> } else if (document.forms[i].elements[j].type.indexOf("select")
!= -1) {
> document.forms[i].elements[j].selectedIndex = -1;
> while (((pos = val.indexOf(" ")) != -1) && (val.length > 1)) {
> sel = parseInt(val.substring(0,pos));
> val = val.substring(pos+1,val.length);
> if (sel < document.forms[i].elements[j].length)
> document.forms[i].elements[j].options[sel].selected = true;
> }
> } else if (document.forms[i].elements[j].type == "checkbox") {
> document.forms[i].elements[j].checked = val;
> } else if (document.forms[i].elements[j].type == "radio") {
> if (document.forms[i].elements[j].value == val)
> document.forms[i].elements[j].checked = true;
> }
> }
> }
> }
> }
> }
>
> window.onload = storedValues;
>
> // -->
> </SCRIPT>
>
>
>
>
>
>
> Sample form:<br><br>
>
> <form name="test">
> Name: <input type="text" name="fullname" onChange="saveValue(this)"
size=30><br>
> Password: <input type="password" name="password"
onChange="saveValue(this)"
> size=30><br>
> <input type="radio" name="spouse" onClick="saveValue(this)"
value="married">
> Married
> <input type="radio" name="spouse" onClick="saveValue(this)"
value="single">
> Single<br>
> <input type="checkbox" name="likeit" value="yes"
onClick="saveValue(this)">
> I like this script<br>
> Hometown: <input type="text" name="nothing" size=30><br>
> <i>("Hometown" doesn't remember what you enter in it)</i><br><br>
> Age:<br>
> <select name="age" onChange="saveValue(this)" size=1>
> <option selected>0-10
> <option>11-20
> <option>21-30
> <option>31-40
> <option>41-50
> <option>51-60
> <option>61-70
> <option>over 70
> </select><br><br>
>
> I use the following browsers: (select all that apply)<br>
> <select name="browser" onChange="saveValue(this)" size=3 multiple>
> <option>Netscape Navigator
> <option>Microsoft Internet Explorer
> <option>Other
> </select><br><br>
>
> Other Comments:<br>
> <textarea name="comments" rows=4 cols=60
onChange="saveValue(this)"></textarea>
> </form>
>
>
>
>
>
>
>
>
> Script from <a href="http://www.infohiway.com/javascript?memory">Cut and
> Paste JavaScript</a>.
>
>
> </body>
> </html>
> Gary E. Daniels
> Cornerstone Appraiser Company
> 500 Selkirk Drive
> Schaumburg, IL. 60194
> 847 882-5892 Fax 847 882-5963
> mailto:gdaniels(at)ais.net
>
> Online Appraisal Order Form and ASK Special Purpose Property Refferal
> Database at
> http://www.askdata.net
>
HWG: hwg-languages mailing list archives,
maintained by Webmasters @ IWA