Hi,
also
HTML-Datei
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//GER">
<html>
<head> <title>Weblease Netbusiness AG - Web-Shop></title> <meta http-equiv="Author" content="Ludger Keitlinghaus"> <meta http-equiv="expires" content="0"> <link rel=stylesheet type="text/css" href="#Supplier_GUID_CSS"> <script language="JavaScript" src="../js/web_shop.js" type="text/javascript"></script> <script language="JavaScript"> function Submit_Form() { var RetCode = chkfrm("'"); if (RetCode == "") {document.Lst_Products_Prepare_1.submit();} else {alert (RetCode);} } </script> </head>
<body> <form name="Lst_Products_Prepare_1" action="ws-lst.pl" method="Post"> <h1> Produktsuche: </h1> <table border="0"> <tr> <td> Produktklasse </td> <td> <select name="Product_AssetClass_GUID" style="width:220px;"> <!--LST_ASSET_CLASSES_AND_ASSET_CATEGORIES--> </select> </td> </tr> <tr> <td> Produktname </td> <td> <input maxlength="50" type="text" name="Product_Name" style="width:220px;"> </td> </tr> <tr> <td> Verkaufspreis-Minimum </td> <td> <input id="ZAHL" maxlength="50" type="text" name="Product_Cost_Minimum" style="width:220px;text-align:right;" align="right" value="0"> </td> </tr> <tr> <td> Verkaufspreis-Maximum </td> <td> <input id="ZAHL" maxlength="50" type="text" name="Product_Cost_Maximum" style="width:220px;text-align:right;" align="right" value="1000000"> </td> </tr> <tr> <td> Währung </td> <td> <select name="Product_CostCurrency" style="width:220px;"> <!--LST_CURRENCIES--> </select> </td> </tr> </table> <br> <input type="hidden" name="Session_GUID" value="#Session_GUID"> <input type="hidden" name="WhatToDo" value="Lst_Products_Prepare_1"> <input type="button" value="Produkt suchen!" onclick="JavaScript:Submit_Form()"> </form> <form name="Lst_Products" action="ws-lst.pl" method="Post"> <!--LST_PRODUCTS--> <input type="hidden" name="Session_GUID" value="#Session_GUID"> <input type="hidden" name="WhatToDo" value="Lst_Products"> </form> </body>
</html>
JS-Datei (Auszug)
/* tauscht für SQL-Statements kritsche Hochkommata und Anfuehrungszeichen aus ID="ZAHL" - Eingabefeld muss numerisch sein; Dezimaltrenner Komma wird durch Punkt ersetzt ="DATUM" - Eingabefeld muss "profikorrekte" JS-Pruefung bestehen ="ML<x>" - Eingabefeld muss Mindestlänge haben Zurückgegeben wird die Variable ReturnValue, die fuer den Nutzer "alerted" werden koennte. Zudem werden fuer SQL-Zwecke Hochkommata durch doppelte Hochkommata ersetzt. */ function chkfrm(ZeichenZumAustauschen) { // das gibt die Funktion zurueck var ReturnValue = ""; // schnappt sich alle HTML-Select-Elemente des Dokuments for(i=0;i<document.getElementsByTagName("select").length;++i) { // prueft auf getroffene Auswahl if (document.getElementsByTagName("select")[i].value == "") { ReturnValue = ReturnValue + "Fehler im Auswahlfeld "" + document.getElementsByTagName("select")[i].name + "" (keine Auswahl getroffen)\n"; } } // schnappt sich alle HTML-Input-Elemente des Dokuments for(i=0;i<document.getElementsByTagName("input").length;++i) { // schnappt sich alle HTML-Input-Elemente des Typs "text" if (document.getElementsByTagName("input")[i].type == "text" | document.getElementsByTagName("input")[i].type == "password") { // prueft, ob Eingabefelder mit numerischem Inhalt(ID="ZAHL") korrekt gefuellt sind if (document.getElementsByTagName("input")[i].id == "ZAHL") { // ersetzt Kommata durch Punkte while (document.getElementsByTagName("input")[i].value.search(/,/) != -1) { document.getElementsByTagName("input")[i].value = document.getElementsByTagName("input")[i].value.replace(/,/,"."); } // prueft auf Zahl if (document.getElementsByTagName("input")[i].value == "" || isNaN(document.getElementsByTagName("input")[i].value) == true) { ReturnValue = ReturnValue + "Fehler im Eingabefeld "" + document.getElementsByTagName("input")[i].name + "" (kein numerischer Wert)\n"; } } // prueft, ob Eingabefelder mit einem Datum als Inhalt(ID="DATUM") korrekt gefuellt sind if (document.getElementsByTagName("input")[i].id == "DATUM") { var d = ""; // liegt ein achstelliger interpretierbarer Datumswert vor? if (document.getElementsByTagName("input")[i].value.length == 8) { d = document.getElementsByTagName("input")[i].value.slice(6,8) + "/" + document.getElementsByTagName("input")[i].value.slice(3,5) + "/" + document.getElementsByTagName("input")[i].value.slice(0,2); } // liegt ein zehnstelliger interpretierbarer Datumswert vor? else if (document.getElementsByTagName("input")[i].value.length == 10) { d = document.getElementsByTagName("input")[i].value.slice(6,10) + "/" + document.getElementsByTagName("input")[i].value.slice(3,5) + "/" + document.getElementsByTagName("input")[i].value.slice(0,2); } var datum = new Date(d); // liegt ein interpretierbarer Datumswert vor? if (isNaN(Number(datum))) { ReturnValue = ReturnValue + "Fehler im Eingabefeld "" + document.getElementsByTagName("input")[i].name + "" (kein Datumswert)\n"; } } // prueft, ob Eingabefelder mit einem Datum als Inhalt(ID="DATUM") korrekt gefuellt sind if (document.getElementsByTagName("input")[i].id.substr(0,2) == "ML") { if (document.getElementsByTagName("input")[i].value.length < document.getElementsByTagName("input")[i].id.substr(2,1)) { ReturnValue = ReturnValue + "Fehler im Eingabefeld "" + document.getElementsByTagName("input")[i].name + "" (Mindestlänge(" + document.getElementsByTagName("input")[i].id.substr(2,1) + ") unterschritten)\n"; } } // SQL-Check, wenn alle Eingabefelder korrekt gefuellt worden sind: if (ReturnValue == "") { // da sich theoretisch die Zeichenlaenge verdoppeln kann: document.getElementsByTagName("input")[i].maxLength = document.getElementsByTagName("input")[i].maxLength * 2; // durchlaeuft das uebergebene "Array" for(j=0;j<ZeichenZumAustauschen.length;++j) { // schreibt zwei Zeichen statt einem var s1 = ZeichenZumAustauschen.substr(j,1); var s2 = s1 + s1; // durchlaeuft die Zeichenkette for(k=0;k<document.getElementsByTagName("input")[i].value.length;++k) { // ersetzt if (document.getElementsByTagName("input")[i].value.substr(k,1) == s1) { document.getElementsByTagName("input")[i].value = document.getElementsByTagName("input")[i].value.slice(0,k) + s2 + document.getElementsByTagName("input")[i].value.slice(k+1) k = k + 1; } } } } } } return ReturnValue; }
Wichtig ist halt <input type="button" value="Produkt suchen!" onclick="JavaScript:Submit_Form()">
dann wird <script language="JavaScript"> function Submit_Form() { var RetCode = chkfrm("'"); if (RetCode == "") {document.Lst_Products_Prepare_1.submit();} else {alert (RetCode);} } </script> aufgerufen
was wiederum auf die Funktion in der JS-Datei zugreift
Der Code läuft so übrigens nicht; ist irgendwo herausgepflückt. chlFrm liefert einen Leerstring zurück oder halt eine Fehlermeldung. In Abhängigkeit des Strings wird das form submitted oder es wird was alerted.
Hoffe, das hilft. Gruss, Lude