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

3 Antworten

Versuch's mal mit document.getElementById("id-name").value.size

Du solltest Dir vorher überlegen, welche Zeichen Du denn überhaupt verbieten willst:

  • Es gibt mit Sicherheit irgendwo eine "Carl-von-Linné-Straße"
  • Du kannst davon ausgehen, dass fast jeder größere französische Ort in irgendeiner Straße verewigt wurde.
  • In Mannheim gibt es anstelle von Straßen Blockbezeichnungen A1, C5 usw.

Ansonsten funktionieren wohl die hier vorgeschlagenen regulären Ausdrücke leidlich, wenn man damit leben will, dass Großbuchstaben mitten im Wort stehen können oder die Angabe mit Leerzeichen oder Bindestrich beginnen kann.

Die vorgeschlagene Lösung mit dem pattern-Attribut ist die richtige. Nur als offensichtliche Ergänzung: Sollten die Daten an einen Server gesendet werden, dann muss das Server-Skript diese Daten noch einmal überprüfen und darf sich nicht darauf verlassen, dass sie bestimmten Regeln folgen, unabhängig davon was im Frontend passiert ist. Ich kann jede Frontend-Validierung umgehen.

<input type="text" pattern="[a-zA-Z0-9äöüßÄÖÜ]*">

erlaubt nur die Eingabe von kleinbuchstaben, GROSSBUCHSTABEN und Ziffern.

Alex


EinAlexander  28.02.2019, 18:40

Besser ist das:

<input type="text" pattern="[a-zA-Z0-9äöüßÄÖÜ-/ ]*">

Dann kannst der User auch noch Leerzeichen und den Schärgstrich eingeben, so dass eine Eingabe

Hauptstraße 10/2

möglich ist. Meist ist aber die Vorgabe eines bestimmten Formats keine gute Idee.

0
psychopathenboy 
Fragesteller
 01.03.2019, 15:07
@EinAlexander

Danke dir, scheint die simpelste Lösung zu sein, aber es soll in JavaScript erfolgen :D Gibt es dazu ein Pendant (Gegenstück)?

0
EinAlexander  01.03.2019, 15:37
@psychopathenboy
aber es soll in JavaScript erfolgen

geht auch. Aber wozu?

<!doctype html>
<title>fool's solution</title>
<script>
function check(str) {
   if (str.match(/^[a-zA-Z0-9äöüÄÖÜß\/\ ]*$/)) {
       alert("Passt!");
   } else {
       alert("Passt nicht!");
   }
}
</script>
<form>
<p><input id="strasse" onchange="check(this.value)"></p>
<p><input type="submit"></p>
</form>
1
psychopathenboy 
Fragesteller
 02.03.2019, 18:24
@EinAlexander
Ist halt so vorgegeben und ich wusste nicht weiter^^ Könntest du den Teil hier eventuell erläutern? "/^[a-zA-Z0-9äöüÄÖÜß\/\ ]*$/" Das in den eckigen Klammern wird wohl ein Array sein, aber was hat es mit den Slashes, dem "^", sowie dem "*" und dem Dollarzeichen auf sich? Ich habe da etwas gegoogelt, aber konnte nix dazu finden :/
0
psychopathenboy 
Fragesteller
 02.03.2019, 19:07
@EinAlexander

Ok hab es mir durchgelesen, danke dir. Letzte Frage denke ich :D Wenn ich die maximale Länge einer bspw. Postleitzahl festlegen will, müsste man das dann folgendermaßen machen? var plz = /^[0-9].{5}$/;

0