Javascript im Ausgabeform - läuft nicht mehr!?
Alexander
- cgi
Hallo!
Wollt ein Javascript in mein html Formular einsetzen, welches ich von dem Script zurückschicke und in das die daten übernommen wurden....
Jedenfalls würde ich gerne einige Felder überprüfen, halt ob ausgefüllt oder gültig....
Das geht ja eigentlich ziemlich einfach mit Javascript, nur sobald ich das Script einfüge,geht nix mehr(internal server error), aber nur wenn ich <script>.... in den <head> Bereich einfüge.
Dannhabe ich noch onsubmit.... in das formtag eingefügt, ist alles richtig so und funktionieret in einem "normalen" Formular, aber in perl geht da irgendwas nicht. Aber Ihr hattet doch gesagt man könne auch Javascript verwenden?
Folgendermaßen sieht das Script jetzt aus:
#!/usr/bin/perl
use CGI qw(param);
print "Content-type: text/html\n\n" ;
$Hersteller = param("Hersteller");
$Produkt = param("Produkt");
$Beschreibung = param("Beschreibung");
$Fzg_Herst = param("Fzg_Herst");
$Fzg_Typ = param("Fzg_Typ");
$Fzg_Bez = param("Fzg_Bez");
$Preis = param("Preis");
$Europreis = sprintf("%.2f",$Preis / 1.95583);
$MwSt = sprintf("%.2f",$Preis / 7.25);
$Summe = sprintf("%.2f",$Preis);
print <<EOF ;
<head>
<title>CGI Results</title>
<script language="JavaScript">
<!--
function MM_findObj(n, d) { //v4.0
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && document.getElementById) x=document.getElementById(n); return x;
}
function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
} else if (test!='R') {
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (val<min || max<val) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
} if (errors) alert('The following error(s) occurred:\n'+errors);
document.MM_returnValue = (errors == '');
}
//-->
</script>
</head>
<body bgcolor="#FFFFFF" text="#000000" background="/images/rh-bgr.jpg" leftmargin="0" topmargin="0">
<img src="/images/onlinebestellung_text.gif" width="510" height="57">
<form name="form1" method="post" action="/cgi-bin/form3.cgi" onSubmit="MM_validateForm('Eingabe_Hersteller','','R','Eingabe_Typ','','R','KW','','RinRange20:400','EZ','','R');return document.MM_returnValue">
.
.
.
.
Vielleicht weiß jemand, wo der Fehler liegen könne, ohne das Javascript ging alles ohne Probleme!
Gruß
Alex
Hallo Alex,
In string, @' now must be written as @' at D:\schrott\test.pl line 18, near "@'
"
Execution of D:\schrott\test.pl aborted due to compilation errors.
Alles klar?
Ach ja, wenn 'Internal Server Error' kommt, dann bitte den Server Log durchsehen.
Das geht nicht am Server?
Lokal eine adäquate Umgebung schaffen, zum Testen nämlich. Ist sowieso besser, erst mal offline zu testen.
Oft hilft es schon lokal perl zu installieren und das Script in der Shell aufzurufen.
Grüße
Klaus
PS.: Doppelpostings sieht hier keiner gern.
PPS.: der Scriptname ist rein zufällig und ähnlichkeiten zu bestehenden Scripts nicht gewollt;-)