Veröffentlicht 28. August 200322 j Hallo, habe mit JavaScript eine Funktion erstellt, die nur Text als Eingabe im Formularfeld zulässt: <form action="insert.php" method="post" name="formular"> <p>Kundennummer<br> <input name="kundennummer" type="text" size="8" maxlength="8"> </p> <input type=button value=speichern name=submitbutton onClick="pruefe_eingabe();"> </form> <script language="javascript"> function pruefe_eingabe() { if ((document.formular.kundennummer.value * 1) != document.formular.kundennummer.value) { alert("Bitte geben Sie eine Zahl ein."); } else { document.formular.submit(); } } </script> Jedoch nimmt er noch Buchstaben an, wenn ich auf "Enter" drücke. Wie kann ich auch das auch noch unterbinden ?
28. August 200322 j müsste meiner meinung nach so aussehen (siehe: onSubmit): <form action="insert.php" method="post" name="formular" onSubmit="return pruefe_eingabe();"> <p>Kundennummer<br> <input name="kundennummer" type="text" size="8" maxlength="8"> </p> <input type=button value=speichern name=submitbutton > </form> <script language="javascript"> function pruefe_eingabe() { if ((document.formular.kundennummer.value * 1) != document.formular.kundennummer.value) { alert("Bitte geben Sie eine Zahl ein."); return false; } else { document.formular.submit(); return true;} } </script>
28. August 200322 j Autor Sieht gut aus, danke. Allerdings kommt jetzt die Fehlermeldung nur, wenn ich auf Enter drücke. Wenn ich den Button drücke, passiert gar nichts mehr (auch bei richtiger Eingabe).
28. August 200322 j <form action="....." onSubmit="check( this);"> <input type="submit" value="drück"> </form> function check( oInputField) { if ("13" == window.event.keyCode) { return false; } return true; } so sollte es gehen ist aber nicht getestet
28. August 200322 j Autor Ne, das klappt irgendwie gar nicht. Ich habe da plötzlich einen neuen Button mit der Aufschrift "Anfrage senden" drinne und mein Formularfeld ist verschwunden.
28. August 200322 j Autor Jetzt klappt es: form action="insert.php" method="post" name="formular" onSubmit="return pruefe_eingabe();"> <p>Kundennummer<br> <input name="kundennummer" type="text" size="8" maxlength="8"> </p> <input type=button value=speichern name=submitbutton onClick="return pruefe_eingabe();"> </form> <script language="javascript"> function pruefe_eingabe() { if ((document.formular.kundennummer.value * 1) != document.formular.kundennummer.value) { alert("Bitte geben Sie eine Zahl ein."); return false; } else { document.formular.submit(); return true;} } </script> Danke für Eure Hilfe. EDIT: Neiiin. Eine Sache habe ich noch vergessen: Wenn ich das Formularfeld komplett leer lasse, soll auch diese Meldung erscheinen. Es soll quasi eine Eingabe erzwungen werden. Man, das wird ja immer komplizierter....:eek:
28. August 200322 j . . . if ((document.formular.kundennummer.value * 1) != document.formular.kundennummer.value) . . . Was ist das fürn Sinnloser vergleich? lösungvorschlag von mir: <script language="javascript"> function pruefe_eingabe() { if (isNaN(parseInt(document.formular.kundennummer.value, 10)) || dument.formular.kundennummer.value.length == 0) { alert("Bitte geben Sie eine Zahl ein."); return false; } else { document.formular.submit(); return true; } } </script>
29. August 200322 j Autor @kills Ich habe Deinen Lösungsvorschlag auch nochmal ausprobiert und es klappt fast: - Richtige Eingabe mit Enter (klappt) - Richtige Eingabe mit Button (klappt) - Leeres Feld mit Enter (klappt) - Leeres Feld mit Button (klappt) - NUR Buchstaben mit Enter (klappt) - NUR Buchstaben mit Button (klappt) - Mischung Buchstaben/Zahlen erstes Zeichen ein Buchstabe klappt mit Button und Enter Aber: Mischung Buchstaben/Zahlen und erstes Zeichen eine Zahl klappt nicht mit Button und Enter So, ich glaube ich habe jetzt alle Möglichkeiten durch. Aber es ist immer noch nicht perfekt. Kann es sein, dass das alles mit dem einem Button nicht zu machen ist bzw. dass man den einen Button nicht mit mehreren Funktionen gleichzeitig belegen kann ?
29. August 200322 j versuchs ma so: <script language="javascript"> function pruefe_eingabe() { if (isNaN(document.formular.kundennummer.value, 10) || dument.formular.kundennummer.value.length == 0) { alert("Bitte geben Sie eine Zahl ein."); return false; } else { document.formular.submit(); return true; } } </script> jetzt sollten alle deine Bedürfnisse befriedigt sein
1. September 200322 j Autor @kills Mist, ich habe doch noch ein Zeichen gefunden, dass auch nicht sein darf: "." der Punkt. Den interpretiert er wohl als Dezimal-Komma und denkt deshalb, dass es sich um eine Zahl handelt. Wie kriege ich den auch noch ausgeschlossen ? Die anderen Sonderzeichen (!"§$% etc.) sind ok.
1. September 200322 j Autor Und noch zwei Zeichen nimmt er verbotenerweise an: "-" und "+" vor der Zahl, weil er dann denkt es sei eine negative bzw. positive Zahl....
1. September 200322 j <script language="javascript"> function pruefe_eingabe() { oElement = document.formular.kundennummer; if (isNaN(parseInt(oElement.value, 10)) || oElement.value.length == 0) { alert("Bitte geben Sie eine Zahl ein."); return false; } else { document.formular.submit(); return true; } } </script> versuch das ma
1. September 200322 j Autor @kills Richtig, es sind nur Ganzzahlen erlaubt ohne +, -, Punkte oder sonstige Zeichen die die Tastatur hergibt . Habe Deine Lösung nochmal ausprobiert, aber es klappt immer noch nicht. Es klappt nur, wenn ich ausschließlich einen Punkt ins Formular eingebe, aber nicht Zahlen und Punkte (bzw. + und -) gemischt. Ich denke auch, dass die erste Lösung schon gut ist. Nur muss ich irgendwie versuchen, in der "if-Anweisung" zusätzlich noch die genannten Zeichen explizit zu "verbieten". Und da weiß ich halt nicht weiter.
1. September 200322 j notlösung: <script language="javascript"> function pruefe_eingabe() { oElement = document.formular.kundennummer; if (isNaN(oElement.value) || oElement.value.length == 0 || oElement.value.lastIndexOf(".")>0 ||oElement.value.lastIndexOf("+")>0 || oElement.value.lastIndexOf("-")>0) { alert("Bitte geben Sie eine Ganzzahl ein."); return false; } else { document.formular.submit(); return true; } } </script>
1. September 200322 j Autor Danke für Deine Mühe kills. Es klappt aber immer noch nicht 100%ig. Folgende Kombinationen bereiten ihm immer noch Schwierigkeiten: "-Zahl" "+Zahl" ".Zahl" Also praktisch überall, wo verbotene Zeichen mit erlaubten Zeichen gemischt werden. Aber z.B. ".+-" als Eingabe geht einwandfrei, ebenso wenn ich die 3 Zeichen jeweils einzeln eingebe. Ebenso klappt es mit -10.56 oder +456.546 etc. Sehr merkwürdig. Vielleicht sollte man das umgekehrt machen: Alle Tasten vom Keyboard sperren und die Ziffern 0-9 erlauben. Geht sowas auch ?
1. September 200322 j jetzt aber, getestet und funzt <script language="javascript"> function pruefe_eingabe() { oElement = document.formular.kundennummer; if (isNaN(oElement.value) || oElement.value.length == 0 || oElement.value.lastIndexOf(".") < 0 || oElement.value.lastIndexOf("+") < 0 || oElement.value.lastIndexOf("-") < 0) { alert("Bitte geben Sie eine Ganzzahl ein."); return false; } else { document.formular.submit(); return true; } } </script>
1. September 200322 j Autor Es klappt fast, nur jetzt kommt der Alert bei jeder Eingabe, auch bei normalen Ganzzahlen, die ja erlaubt sind. Man ist das eine schwierige Geburt mal wieder... Langsam blicke ich gar nix mehr.
1. September 200322 j hab bald kein bock mehr. du könntest auch ma die 2 möglichkeiten durch versuchen die noch übrig geblieben sind: nu aber: <script language="javascript"> function pruefe_eingabe() { oElement = document.formular.kundennummer; if (isNaN(oElement.value) || oElement.value.length == 0 || oElement.value.lastIndexOf(".") >= 0 || oElement.value.lastIndexOf("+") >= 0 || oElement.value.lastIndexOf("-") >= 0) { alert("Bitte geben Sie eine Ganzzahl ein."); return false; } else { document.formular.submit(); return true; } } </script>
1. September 200322 j Autor Vielen Dank, scheint jetzt endlich zu klappen. Ich hatte überall schon herumprobiert, hatte aber das Gleichzeichen aber auf der falschen Seite gesetzt. Da klappt es natürlich nicht. Langsam tun mir aber auch schon die Augen weh. :cool:
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.