2017-03-31 3 views
0

Ich bin nicht sicher, wie das heißt. Es ist wirklich einfach. Ich habe versucht, eine Pipe zu benutzen, aber ich habe einen Fehler bekommen. Ich suche nach etwas so einfach wie:Angular 2 verhindern, dass Benutzer bestimmte Zeichen in ein Texteingabefeld eingeben

<input [(ngModel)]="order.name | lettersOnlyPipe"/> 

Das funktioniert nicht. Was kann ich tun, um dies zu erreichen?

+0

Möchten Sie verhindern, dass sie eingegeben werden? Oder sie nach der Eingabe ausfiltern? Wenn das später, dann wird eine Pipe funktionieren. Wenn das erste, dann ein Muster oder eine Richtlinie die beste Option sein könnte. – DeborahK

+0

Schauen Sie sich [Textmaske] an (https://github.com/text-mask/text-mask). – developer033

Antwort

1

Ihre beste Wette dafür ist Ihre eigene Richtlinie.

einige einfachen Ideen um Ihnen gehen:

  • Ihre Richtlinie überwacht das Eingabeereignis auf seinem Host Elemente
  • auf jedem Eingabeereignis, Sie prüfen, ob der Eingabewert gültig ist, wenn nicht, Sie setzen Ihre Eingabe

oder alternativ * auf seinen alten Wert zurück keydown Ereignis überwachen und auf jedem keydown, prüfen Sie, ob der Schlüssel ein gültiger Schlüssel ist - wenn nicht, Ihre Eingabe zurück gesetzt t o sein alter Wert

Das ist der grundlegende Ansatz. Sie können die highlight directive example in the angular docs als Leitfaden für den Einstieg betrachten.

2

Mit der jüngsten Angular4 geben Sie das pattern Attribut verwenden können Zeichen zu beschränken, wie in diesem feature

erwähnt
<input [(ngModel)]="order.name" pattern="" /> 

In anderen Fall, dass Sie es mit benutzerdefinierten Richtlinie umgehen sollte. beziehen sich diese [Antwort] für eine Probe 2

+2

Ich habe versucht, das Muster-Attribut wie Sie darauf hingewiesen. Dadurch wurde im Feld ein Fehler angezeigt, der Benutzer konnte jedoch keine Zeichen eingeben. – BBaysinger

1

ich hier eine ähnliche response geschrieben, müssen Sie nur regex ändern (entfernen Zahlen und vielleicht arabische Zeichen von ihm). Ich hoffe es hilft.

Verwandte Themen