|
Willkommen,
Gast
|
Ich Finde Den Fehler Nicht (abfrage Eines Inputs)
(1 Leser) (1) Gast
Bitte beachten, dass es hier nur um Javascripts geht, die sich in unserem Archiv befinden.
|
THEMA: Ich Finde Den Fehler Nicht (abfrage Eines Inputs)
Ich Finde Den Fehler Nicht (abfrage Eines Inputs) 2 Jahre, 11 Monate her #1135
|
Hier mal eben die Kurzfassung. Es sollen in den inputs, hier nur mit einem Beispiel, abgefragt werden, ob die richtigen Eingaben gemacht wurden. Doch irgend wo fehlt mir ein Objekt? WOOO?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <script type="text/javascript"> // MERKVARIABLEN ganzzahlen_felder = new Array("PLZ"); waehrungs_felder = new Array("ESF1"); datums_felder = new Array("Datum"); radio_felder = new Array("_gelesen"); checkbox_felder = new Array("p"); menue_felder = new Array("Schulamt"); eingabe_felder = ganzzahlen_felder.concat(waehrungs_felder, datums_felder,radio_felder, checkbox_felder, menue_felder); // PROGRAMM-FUNKTIONEN function ersetzeKomma(wert) { // Ersetzt Komma durch Dezimalpunkt var ergebnis=""+wert; var pos=ergebnis.indexOf(","); if (pos >= 0) { ergebnis=ergebnis.substring(0,pos)+"."+ergebnis.substring(pos+1); } ergebnis=parseFloat(ergebnis); return ergebnis; } function ersetzePunkt(wert) { // Ersetzt Dezimalpunkt durch Komma und schneidet bei Bedarf die hinteren Stellen ab var ergebnis=""+wert; var pos=ergebnis.indexOf("."); if (pos >= 0) { ergebnis=ergebnis.substring(0,pos)+","+(ergebnis+"00").substr(pos+1,2); } else if (parseFloat(ergebnis)==0) ergebnis="0"; else ergebnis=parseInt(ergebnis)+",00"; return ergebnis; } function rundeEuro(a) { // rundet den Betrag auf 2 Stellen nach dem Komma z1=parseFloat(a)*100; z1=Math.round(z1); z2=parseInt(z1)/100; return z2; } function schreibeEuro(betrag) { // gibt einen Eurobetrag mit Komma und zwei Stellen zurück // für die Ausgabe in Feldern return ersetzePunkt(rundeEuro(betrag))+" €"; } function pruefeFeldWaehrung(Name) { // überschreibt ein Euro-Feld mit seinem schönformatierten Inhalt if (!isNaN(eval("ersetzeKomma(document.berechnung."+Name+".value)"))) eval("document.berechnung."+Name+".value=ersetzePunkt(rundeEuro(ersetzeKomma(document.berechnung."+Name+".value)))") else eval("document.berechnung."+Name+".value=0"); } function pruefeFeldNumerisch(Name) { // überschreibt ein numerisches Feld mit seinem errechneten Inhalt if (!isNaN(eval("ersetzeKomma(document.berechnung."+Name+".value)"))) { var val=parseInt(eval("ersetzeKomma(document.berechnung."+Name+".value)")); // Direkte Zuweisung macht Fehler in Mozilla - Bug? eval("document.berechnung."+Name+".value=val") } else eval("document.berechnung."+Name+".value=0"); } function pruefeFeldDatum(Name, quiet) { // prüft ein Datum und ersetzt den Inhalt mit dem schönformatierten Inhalt // im Fehlerfall wird das Feld rot eingefärbt und die Funktion gibt false zurück var jetzt=new Date(); var aktj=jetzt.getYear(); if (aktj<2000) aktj=aktj+1900; // Y2K-Fehler umgehen var fehler="Das Datum ist nicht richtig eingegeben worden oder macht keinen Sinn.\nBitte geben Sie das Datum im Format "tt.mm.jj" oder "tt.mm." an (z.B. 1.7."+aktj+" oder 1.7.)."; var feld=eval("document.berechnung."+Name); var datum=feld.value; // Prüfen if (datum=="") return true; // leere Eingabe if (datum.indexOf(".")==-1) { // 1. Punkt fehlt Fehler(); return false; } var t=parseFloat(datum.substring(0,datum.indexOf("."))); // Tag datum=datum.substr(datum.indexOf(".")+1,datum.length-datum.indexOf(".")-1); // Rest isolieren if (datum.indexOf(".")==-1) { // 2. Punkt fehlt Fehler(); return false; } var m=parseFloat(datum.substring(0,datum.indexOf("."))); // Monat datum=datum.substr(datum.indexOf(".")+1,datum.length-datum.indexOf(".")-1); // Rest isolieren if (datum=="") datum=aktj; var j=parseFloat(datum); // Jahr if (j>=0 && j<50) j=j+parseInt(aktj/100)*100; // Datum 0-49 zweistellig eingegeben (2000-2049) if (j>=50 && j<100) j=j+parseInt(aktj/100)*100-100; // Datum 50-99 zweistellig eingegeben (1950-1999) if (isNaN(t) || isNaN(m) || isNaN(j) || t<=0 || m<=0 || j<=2009 || m>12 || j>aktj+1) { // untere oder obere Grenze verletzt Fehler(); return false; } var tgrenze=31; // Obergrenze für den Tag bestimmen if (m==4 || m==6 || m==9 || m==11) tgrenze=30; if (m==2) { // Schaltjahr tgrenze=28; if (j%4==0) tgrenze++; if (j%100==0) tgrenze--; if (j%400==0) tgrenze++; } if (t>tgrenze) { // Obergrenze Tag verletzt Fehler(); return false; } // Nullen bei den Einzelwerten einfügen if ((""+t).length==1) t="0"+t; if ((""+m).length==1) m="0"+m; // Datum neu zusammenbauen und ins Feld schreiben feld.value=t+"."+m+"."+j; document.getElementById(Name).className=""; return true; function Fehler() { // Hilfsfunktion für prüfeFeldDatum //feld.value=""; // Inhalt nicht löschen - Feld muss vor Berechnung erneut geprüft werden if (!quiet) alert (fehler); if (document.getElementById) document.getElementById(Name).className="error"; } } function schreibeFeld(Name,wert) { // schreibt Wert in das Inputfeld eval("document.berechnung."+Name+".value=schreibeEuro(wert)"); } function schreibeFeldNumerisch(Name,wert) { // schreibt numerischen Wert in das Inputfeld // für sichtbare Inputfelder mit Ganzzahlenangabe eval("document.berechnung."+Name+".value=parseInt(wert)"); } function schreibeFeldOhneEuro(Name,wert) { // schreibt Euro-Wert ohne Währungssymbol in das Inputfeld // für sichtbare Inputfelder mit Eurowerten eval("document.berechnung."+Name+".value=ersetzePunkt(rundeEuro(wert))"); } function leseFeld(Name) { // liest das Formularfeld mit dem übergebenen Namen aus und zwingt das Ergebnis nach Float return parseFloat(eval("ersetzeKomma(document.berechnung."+Name+".value)")); } function leseDatum(Name) { // prüft und liest das Datums-Formularfeld im sicher gültigen Format tt.mm.jjjj (oder leer) aus if (pruefeFeldDatum(Name,true)) return eval("document.berechnung."+Name+".value"); else return ""; } function leseRadiobutton(feldname){ // wertet eine Radiobutton-Gruppe aus und liefert den Wert des angeklickten Elements var wert=""; var radiolen=eval("document.berechnung."+feldname+".length"); for (var element=0; element<radiolen; element++) { if (eval("document.berechnung."+feldname+"["+element+"].checked")) wert=eval("document.berechnung."+feldname+"["+element+"].value") } return wert; } function leseMenue(feldname) { // liest das Formularfeld Bundesland in eine Variable ein wert=eval("document.berechnung."+feldname+".value"); return wert; } function isInArray(wert, feld) { // sucht einen Wert im Array und liefert den entsprechenden Wahrheitswert zurück var erfolg=false; for (var i in feld) { if (feld[i]==wert) { erfolg=true; break; } } return erfolg; } function holeFeldInVariable(feldname) { // holt den Wert des Formularfeldes in die gleichnamige Variable if (isInArray(feldname, radio_felder)) eval(feldname+"=leseRadiobutton('"+feldname+"')"); else if (isInArray(feldname, checkbox_felder)) eval(feldname+"=document.berechnung."+feldname+".checked"); else if (isInArray(feldname, datums_felder)) eval(feldname+"=leseDatum('"+feldname+"')"); else if (isInArray(feldname, menue_felder)) eval(feldname+"=leseMenue('"+feldname+"')"); else eval(feldname+"=leseFeld('"+feldname+"')"); } function pruefeFeld(feldname) { // prüft das angegebene Feld auf Plausibilität und ändert es bei Bedarf if (isInArray(feldname, datums_felder)) return pruefeFeldDatum(feldname); else if (isInArray(feldname, ganzzahlen_felder)) return pruefeFeldNumerisch(feldname); else if (isInArray(feldname, waehrungs_felder)) return pruefeFeldWaehrung(feldname); else return true; } function setzeFocus(Name) { // setze den Focus auf das übergebene Feld if (Name) if (!eval("document.berechnung."+Name+".disabled")) eval("document.berechnung."+Name+".focus()"); } </script> </head> <body> <form method="POST" action="formpost.de/send.ab?account=DerNordBerli...onf=Eberswalde" name="berechnung" enctype="multipart/form-data"> <center><br><br><br> <input value="0,00" maxlength="8" size="6" id="ESF1" name="ESF1" style="text-align: right" onChange="pruefeFormular(this.name);"> </form> </body> </html> Nach der Eingabe eines Zeichens kommt die Meldung: Zeile 238, Zeichen 1, Objekt erwartet Was soll mir das sagen? Gruß vom Markus |
|
|
Ich Finde Den Fehler Nicht (abfrage Eines Inputs) 2 Jahre, 11 Monate her #7124
|
Du rufst eine Funktion namens "pruefeFormular" im onchange-Attribut des Feldes auf. Aber die Funktion gibts nirgends...
|
|
|
Ich Finde Den Fehler Nicht (abfrage Eines Inputs) 2 Jahre, 11 Monate her #7125
|
Ich Dummerchen, wenn muss man auch alles richtig kopieren. Hier nun alles, mit demselben Fehler.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <script type="text/javascript"> // MERKVARIABLEN ganzzahlen_felder = new Array("PLZ"); waehrungs_felder = new Array("ESF1"); datums_felder = new Array("Datum"); radio_felder = new Array("_gelesen"); checkbox_felder = new Array("p"); menue_felder = new Array("Schulamt"); eingabe_felder = ganzzahlen_felder.concat(waehrungs_felder, datums_felder,radio_felder, checkbox_felder, menue_felder); // PROGRAMM-FUNKTIONEN function ersetzeKomma(wert) { // Ersetzt Komma durch Dezimalpunkt var ergebnis=""+wert; var pos=ergebnis.indexOf(","); if (pos >= 0) { ergebnis=ergebnis.substring(0,pos)+"."+ergebnis.substring(pos+1); } ergebnis=parseFloat(ergebnis); return ergebnis; } function ersetzePunkt(wert) { // Ersetzt Dezimalpunkt durch Komma und schneidet bei Bedarf die hinteren Stellen ab var ergebnis=""+wert; var pos=ergebnis.indexOf("."); if (pos >= 0) { ergebnis=ergebnis.substring(0,pos)+","+(ergebnis+"00").substr(pos+1,2); } else if (parseFloat(ergebnis)==0) ergebnis="0"; else ergebnis=parseInt(ergebnis)+",00"; return ergebnis; } function rundeEuro(a) { // rundet den Betrag auf 2 Stellen nach dem Komma z1=parseFloat(a)*100; z1=Math.round(z1); z2=parseInt(z1)/100; return z2; } function schreibeEuro(betrag) { // gibt einen Eurobetrag mit Komma und zwei Stellen zurück // für die Ausgabe in Feldern return ersetzePunkt(rundeEuro(betrag))+" €"; } function pruefeFeldWaehrung(Name) { // überschreibt ein Euro-Feld mit seinem schönformatierten Inhalt if (!isNaN(eval("ersetzeKomma(document.berechnung."+Name+".value)"))) eval("document.berechnung."+Name+".value=ersetzePunkt(rundeEuro(ersetzeKomma(document.berechnung."+Name+".value)))") else eval("document.berechnung."+Name+".value=0"); } function pruefeFeldNumerisch(Name) { // überschreibt ein numerisches Feld mit seinem errechneten Inhalt if (!isNaN(eval("ersetzeKomma(document.berechnung."+Name+".value)"))) { var val=parseInt(eval("ersetzeKomma(document.berechnung."+Name+".value)")); // Direkte Zuweisung macht Fehler in Mozilla - Bug? eval("document.berechnung."+Name+".value=val") } else eval("document.berechnung."+Name+".value=0"); } function pruefeFeldDatum(Name, quiet) { // prüft ein Datum und ersetzt den Inhalt mit dem schönformatierten Inhalt // im Fehlerfall wird das Feld rot eingefärbt und die Funktion gibt false zurück var jetzt=new Date(); var aktj=jetzt.getYear(); if (aktj<2000) aktj=aktj+1900; // Y2K-Fehler umgehen var fehler="Das Datum ist nicht richtig eingegeben worden oder macht keinen Sinn.\nBitte geben Sie das Datum im Format "tt.mm.jj" oder "tt.mm." an (z.B. 1.7."+aktj+" oder 1.7.)."; var feld=eval("document.berechnung."+Name); var datum=feld.value; // Prüfen if (datum=="") return true; // leere Eingabe if (datum.indexOf(".")==-1) { // 1. Punkt fehlt Fehler(); return false; } var t=parseFloat(datum.substring(0,datum.indexOf("."))); // Tag datum=datum.substr(datum.indexOf(".")+1,datum.length-datum.indexOf(".")-1); // Rest isolieren if (datum.indexOf(".")==-1) { // 2. Punkt fehlt Fehler(); return false; } var m=parseFloat(datum.substring(0,datum.indexOf("."))); // Monat datum=datum.substr(datum.indexOf(".")+1,datum.length-datum.indexOf(".")-1); // Rest isolieren if (datum=="") datum=aktj; var j=parseFloat(datum); // Jahr if (j>=0 && j<50) j=j+parseInt(aktj/100)*100; // Datum 0-49 zweistellig eingegeben (2000-2049) if (j>=50 && j<100) j=j+parseInt(aktj/100)*100-100; // Datum 50-99 zweistellig eingegeben (1950-1999) if (isNaN(t) || isNaN(m) || isNaN(j) || t<=0 || m<=0 || j<=2009 || m>12 || j>aktj+1) { // untere oder obere Grenze verletzt Fehler(); return false; } var tgrenze=31; // Obergrenze für den Tag bestimmen if (m==4 || m==6 || m==9 || m==11) tgrenze=30; if (m==2) { // Schaltjahr tgrenze=28; if (j%4==0) tgrenze++; if (j%100==0) tgrenze--; if (j%400==0) tgrenze++; } if (t>tgrenze) { // Obergrenze Tag verletzt Fehler(); return false; } // Nullen bei den Einzelwerten einfügen if ((""+t).length==1) t="0"+t; if ((""+m).length==1) m="0"+m; // Datum neu zusammenbauen und ins Feld schreiben feld.value=t+"."+m+"."+j; document.getElementById(Name).className=""; return true; function Fehler() { // Hilfsfunktion für prüfeFeldDatum //feld.value=""; // Inhalt nicht löschen - Feld muss vor Berechnung erneut geprüft werden if (!quiet) alert (fehler); if (document.getElementById) document.getElementById(Name).className="error"; } } function faerbeFehlerfeld(Name) { // Färbt das übergebene Feld rot ein if (document.getElementById) document.getElementById(Name).className="error"; // nur 6er Browser, Felder brauchen ID! } function entfaerbeFehlerfeld(Name) { // Färbt das übergebene Feld wieder normal if (document.getElementById) { // nur 6er Browser, Felder brauchen ID! if (Name!="palter") document.getElementById(Name).className=""; else document.getElementById(Name).className="text"; // Sonderfall!!! } } function schreibeFeld(Name,wert) { // schreibt Wert in das Inputfeld eval("document.berechnung."+Name+".value=schreibeEuro(wert)"); } function schreibeFeldNumerisch(Name,wert) { // schreibt numerischen Wert in das Inputfeld // für sichtbare Inputfelder mit Ganzzahlenangabe eval("document.berechnung."+Name+".value=parseInt(wert)"); } function schreibeFeldOhneEuro(Name,wert) { // schreibt Euro-Wert ohne Währungssymbol in das Inputfeld // für sichtbare Inputfelder mit Eurowerten eval("document.berechnung."+Name+".value=ersetzePunkt(rundeEuro(wert))"); } function leseFeld(Name) { // liest das Formularfeld mit dem übergebenen Namen aus und zwingt das Ergebnis nach Float return parseFloat(eval("ersetzeKomma(document.berechnung."+Name+".value)")); } function leseDatum(Name) { // prüft und liest das Datums-Formularfeld im sicher gültigen Format tt.mm.jjjj (oder leer) aus if (pruefeFeldDatum(Name,true)) return eval("document.berechnung."+Name+".value"); else return ""; } function leseRadiobutton(feldname){ // wertet eine Radiobutton-Gruppe aus und liefert den Wert des angeklickten Elements var wert=""; var radiolen=eval("document.berechnung."+feldname+".length"); for (var element=0; element<radiolen; element++) { if (eval("document.berechnung."+feldname+"["+element+"].checked")) wert=eval("document.berechnung."+feldname+"["+element+"].value") } return wert; } function leseMenue(feldname) { // liest das Formularfeld Bundesland in eine Variable ein wert=eval("document.berechnung."+feldname+".value"); return wert; } function isInArray(wert, feld) { // sucht einen Wert im Array und liefert den entsprechenden Wahrheitswert zurück var erfolg=false; for (var i in feld) { if (feld[i]==wert) { erfolg=true; break; } } return erfolg; } function holeFeldInVariable(feldname) { // holt den Wert des Formularfeldes in die gleichnamige Variable if (isInArray(feldname, radio_felder)) eval(feldname+"=leseRadiobutton('"+feldname+"')"); else if (isInArray(feldname, checkbox_felder)) eval(feldname+"=document.berechnung."+feldname+".checked"); else if (isInArray(feldname, datums_felder)) eval(feldname+"=leseDatum('"+feldname+"')"); else if (isInArray(feldname, menue_felder)) eval(feldname+"=leseMenue('"+feldname+"')"); else eval(feldname+"=leseFeld('"+feldname+"')"); } function pruefeFeld(feldname) { // prüft das angegebene Feld auf Plausibilität und ändert es bei Bedarf if (isInArray(feldname, datums_felder)) return pruefeFeldDatum(feldname); else if (isInArray(feldname, ganzzahlen_felder)) return pruefeFeldNumerisch(feldname); else if (isInArray(feldname, waehrungs_felder)) return pruefeFeldWaehrung(feldname); else return true; } function setzeFocus(Name) { // setze den Focus auf das übergebene Feld if (Name) if (!eval("document.berechnung."+Name+".disabled")) eval("document.berechnung."+Name+".focus()"); } function pruefeFormular(changed) { pruefeFeld(changed); if (changed) holeFeldInVariable(changed); if (changed=="p") aktivierePartner(p); if (changed=="submit") { for (var i in eingabe_felder) entfaerbeFehlerfeld(eingabe_felder[i]); var text=""; if (text) { text="Es sind noch nicht alle benötigten Felder ausgefüllt:\n\n\n"+text+"\n\nBitte überprüfen Sie Ihre Eingaben."; alert (text); return false; } else return true; } } </script> </head> <body> <form method="POST" action="" name="berechnung" enctype="multipart/form-data"> <center><br><br><br> <input value="0,00" maxlength="8" size="6" id="ESF1" name="ESF1" style="text-align: right" onChange="pruefeFormular(this.name);"> </form> </body> </html> |
|
|
Ich Finde Den Fehler Nicht (abfrage Eines Inputs) 2 Jahre, 11 Monate her #7126
|
Ich verstehe zwar einige Stellen in deinem Code nicht aber dieser Fehler wird, wenn ich nichts übersehen habe, zum einen durch die Function pruefeFeld ausgelöst dadurch das du keine geschweiften klammern in deiner else-if-Folge verwendet hast.
function pruefeFeld(feldname) {
// prüft das angegebene Feld auf Plausibilität und ändert es bei Bedarf
if (isInArray(feldname, datums_felder)) {
return pruefeFeldDatum(feldname);
} else {
if (isInArray(feldname, ganzzahlen_felder)) {
return pruefeFeldNumerisch(feldname);
} else {
if (isInArray(feldname, waehrungs_felder)) {
return pruefeFeldWaehrung(feldname);
} else {
return true;
}
}
}
}zum anderen durch eine seltsame Schreibweise in einer Abfrage. Wiesoschreibst du denn && anstelle von &&? Gibt doch eigentlich keinen Grund dafür, ist ein Javascript und kein HTML dem du sagen willst was für ein Zeichen angezeigt werden soll.Das ist in der Function pruefeFeldDatum, kommt zweimal vor das ganze, sollteste selbst finden eigentlich. Wenn weiterhin Probleme bestehen wieder melden |
|
|
|
Ladezeit der Seite: 0.47 Sekunden

Forum