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 &nbsp; &nbsp;
> <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