Lude: Formcheck und openBrWindow

Beitrag lesen

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