# Nur bestimmte Zeichen in HTML input Feld erlauben (JavaScript)



## achalisma (28. Feb 2019)

Hi, der Titel erklärt eigentlich schon mein Problem  Für meinen Code brauche ich momentan Hilfe, denn ich weiß nicht wie man es codet, dass man in ein input field nur bestimmte Zeichen erlauben kann. Bei Straßennamen bspw. Buchstaben wie "ß,ö,ü" usw. und halt auch Zahlen die dazugehören. Und gibt es document.getElementById("id-name").size noch? Mir wird in meinem Programm nur sizeToContent vorgeschlagen. Ich danke euch schon mal


----------



## Robat (28. Feb 2019)

Die Frage ist: Was meinst du genau mit "erlauben".
willst du erst beim abschicken (zB. des Formulars) schauen ob die Werte richtig sind - dann kannst du das pattern-Attribut nehmen
oder
willst du dass ungültige Zeichen gar nicht erst in das Input-Feld geschrieben/eingefügt werden können - dann könntest du onkeydown, oninput und onpaste benutzen.


----------



## krgewb (28. Feb 2019)

Es gibt die Eigentschaft *type*.  Hier z.B. number:

```
<input type="number">
```
Der Benutzer kann in dem Textfeld nur Ziffern eingeben. Wenn er auf der Tastatur auf eine Taste für einen Buchstaben drückt, passiert einfach nichts.


----------



## Thallius (28. Feb 2019)

krgewb hat gesagt.:


> Es gibt die Eigentschaft *type*.  Hier z.B. number:
> 
> ```
> <input type="number">
> ...



Funktioniert nur leider immer noch nicht mit allen Browsern.


----------



## achalisma (1. Mrz 2019)

Erst beim Abschicken. Und diese Überprüfung soll durch JavaScript erfolgen, da wäre es bspw. mit dem pattern nicht erlaubt, da es ja HTML-Code wäre.


----------



## Thallius (1. Mrz 2019)

Dank must du am beaten die submit() Methode überschreiben und testest da ob in dem Feld nur valide  Eingaben gemacht wurden


----------



## achalisma (2. Mrz 2019)

Ok und kann ich mit JavaScript auch quasi ein maximum Size setzen, wie viele Zeichen in dem String eingegeben werden dürfen? Bei bspw. einer Postleitzahl wäre das wichtig. Hab jetzt das in eine Variable gepackt und würde das dann mit .match prüfen lassen: /^[0-9]$/;. Jetzt müsste ich da halt noch die Grenze an Zeichen setzen


----------



## mrBrown (2. Mrz 2019)

Dafür kannst du einfach das pattern-Attribute des Input-Tags nutzen.

Wenn du damit wirklich Browser unterstützen musst, die das nicht können, kannst du einen passenden Polyfill einbinden, anstatt das selber schreiben zu müssen. Prüf aber mal, ob das überhaupt unterstütz werden muss, so alte Browser sind zum Glück nicht wirklich verbreitet...


----------



## krgewb (3. Mrz 2019)

Er möchte es aber mit JavaScript machen.

Natürlich kann man auch das maxlength-Attribut des Input-Tags verwenden. Der Nutzer kann aber diese Einstellungen über die Entwicklertools des Browsers manipulieren.


----------



## mrBrown (3. Mrz 2019)

krgewb hat gesagt.:


> Natürlich kann man auch das maxlength-Attribut des Input-Tags verwenden.


Nicht maxlength sondern pattern.



krgewb hat gesagt.:


> Der Nutzer kann aber diese Einstellungen über die Entwicklertools des Browsers manipulieren.


Geht genauso bei JavaScript. Ist da sogar wahrscheinlicher, da einige JS gänzlich deaktivieren.


----------



## krgewb (4. Mrz 2019)

Achso. Aber mit PHP wäre es nicht umgehbar?


----------



## mihe7 (4. Mrz 2019)

Das hat nichts mit PHP zu tun: wenn serverseitig geprüft wird, kann der Client machen, was er will.


----------

