Formcheck und openBrWindow
Chriz
- javascript
Hi!
Gerade versuche ich meinem Formular beizubringen erst die eingegebenen Daten zu checken und dann ein Fenster zu öffnen. Nun bin ich kein JS-Hecht und weiss nicht, was ich ändern muss, damit das Fenster NICHT aufspringt, wenn die Daten nicht komplett sind.
Hier das Script:
function test() {
var str = document.Upload.titel.value;
if (str == "" ) {
alert("\nDas Feld TITEL ist leer.\n\nBitte geben Sie einen Titel für die Datei an.")
document.Upload.titel.focus();
return false;
}
for (var i = 0; i < str.length; i++) {
var ch = str.substring(i, i + 1);
if (((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) && ch != ' ' && ch != 'ä' && ch != 'ö' && ch != 'ü' && ch != 'Ä' && ch != 'Ö' && ch != 'Ü') {
alert("\nDas Titel-Feld akzeptiert nur Buchstaben und Leerzeichen.\n\nBitte geben Sie den Titel nochmal ein.");
document.Upload.titel.select();
document.Upload.titel.focus();
return false;
}
}
}
function MM_openBrWindow(theURL,winName,features) { //v2.0
window.open(theURL,winName,features);
}
<form name="Upload" enctype="multipart/form-data" method="post" action="upload.php" onSubmit="test(); MM_openBrWindow('up.htm','Poster','resizable=yes,width=200,height=25')">
Kann mir jemand helfen?
Ürigens, wie kann ich die Formulardaten an das zu öffnende Fenster weitergeben? Vielleicht muss ich in dem Fenster noch damit arbeiten?
Mit bestem Dank,
Chriz!
Hi,
ich würde in die form ein input-element vom Typ Button reinsetzen und dann die Prüfung mit onClick="chkFrm()" ausführen und das Submit mit frm.Submit() in chkFrm() ausführen lassen. - Mach ich immer so.
chkFrm() ist prima wiederverwertbar und sollte ausgelagert werden.
Gruss,
Lude
Hi,
Hallo!
ich würde in die form ein input-element vom Typ Button reinsetzen und dann die Prüfung mit onClick="chkFrm()" ausführen und das Submit mit frm.Submit() in chkFrm() ausführen lassen. - Mach ich immer so.
Whoops! Der Zug ist an mir vorbeigerast... Ich glaube, dass ich das Grundprinzip der Lösung verstanden habe, aber irgendwas fehlt noch, um das Lämpchen zum Glühen zu bringen.
Könntest Du mir das nochmal feinfühliger erklären? Bitte!
chkFrm() ist prima wiederverwertbar und sollte ausgelagert werden.
Gruss,
Lude
Gruss,
Chriz!
Hi,
also
<!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>
/* 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
Hi,
wie wäre es einfach damit?
function inhalt()
{ if (document.Formularname.Feldname1.value == "" ||
document.Formularname.Feldname2.value == "" ||
document.Formularname.Feldname3.value == "" ||
document.Formularname.Feldname4.value == "")
{neuesfenster = open ("Angabe_wo_Datei_fuer_neues_Fenster_steht", "anzeigeFenster", "height=50,width=300");
neuesfenster.focus();
}
}
Gruss,
Joan