Zum Inhalt springen

Formular abschicken mit "Enter" unterbinden


Empfohlene Beiträge

Geschrieben

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 ?

Geschrieben

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>

Geschrieben



<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

Geschrieben

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:

Geschrieben

.

.

.

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>

Geschrieben

@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 ?

Geschrieben

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 :)

Geschrieben

@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.

Geschrieben

<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

Geschrieben

@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.

Geschrieben

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>

Geschrieben

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 ?

Geschrieben

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>

Geschrieben

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>

Geschrieben

Vielen Dank, scheint jetzt endlich zu klappen.

Ich hatte überall schon herumprobiert, hatte aber das Gleichzeichen aber auf der falschen Seite gesetzt. :P Da klappt es natürlich nicht.

Langsam tun mir aber auch schon die Augen weh. :cool:

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...