Angular2 - Eingabefeld, um nur Zahlen zu akzeptieren
In Angular2, wie kann ich eine Maske mit einem Eingabefeld(textbox), so dass es akzeptiert nur zahlen und keine Buchstaben?
Habe ich Folgendes in HTML eingegeben:
<input type="text" *ngSwitchDefault class="form-control" (change)="onInputChange()" [(ngModel)]="config.Value" focus)="handleFocus($event)" (blur)="handleBlur($event)"/>
Den oben genannten Eingabe wird eine generische Texteingabe-das kann entweder verwendet werden, wie ein einfaches Textfeld oder ein numerisches Feld, (zum Beispiel, um zu zeigen, das Jahr).
Mit angular2, wie kann ich mit dem gleichen input-Steuerung und bewerben Sie irgendeine Art von filter/Maske auf das Feld, so dass es akzeptiert nur zahlen?
Was sind die verschiedenen Arten kann ich dies erreichen?
Hinweis: ich brauche, um dies zu erreichen verwenden nur textbox und nicht mit Eingang Nummer geben.
InformationsquelleAutor der Frage Aniruddha Pondhe | 2017-01-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie angular2 Richtlinien. Plunkr
und Sie schreiben zu müssen die Richtlinie name in der Eingabe als Attribut
vergessen Sie nicht, schreiben Sie Ihre Richtlinie in array-Deklarationen des Moduls.
Durch die Verwendung von regex brauchen Sie noch funktionalen Schlüssel
InformationsquelleAutor der Antwort omeralper
Ich würde gern auf die Antwort von @omeralper , die meiner Meinung nach eine gute Grundlage für eine solide Lösung.
Was ich dir Vorschlage, ist eine vereinfachte und up-to-date-version mit der neuesten web-standards. Es ist wichtig zu beachten, dass event.keycode ist entnommen aus der web-standards und künftige browser-updates möglicherweise nicht mehr. Sehen https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode
Darüber hinaus die Methode
nicht garantieren, dass Sie den keyCode über die Taste betätigt wird, indem der Benutzer die Karten zu den erwarteten Brief identifiziert, auf die Benutzer-Tastatur, da die verschiedenen Tastatur-Konfigurationen wird in einem bestimmten keycode unterschiedliche Charaktere. Mit diesem wird die Einführung bugs, die sind schwer zu identifizieren und können leicht brechen, die Funktionalität für bestimmte Benutzer. Vielmehr schlage ich die Verwendung der Veranstaltung.Schlüssel, siehe docs hier https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key
Darüber hinaus, wir wollen nur, dass die resultierende Ausgabe ist eine gültige dezimalen. Dies bedeutet, dass die zahlen 1, 11.2, 5000.2341234 sollte akzeptiert werden, aber den Wert 1.1.2 sollten nicht akzeptiert werden.
Beachten Sie, dass in meiner Lösung bin ich ohne Ausschneiden, kopieren und einfügen-Funktion, da es open windows auf Fehler, vor allem, wenn die Menschen fügen Sie unerwünschten text in den entsprechenden Feldern. Das wäre erforderlich, wenn ein cleanup-Prozess auf ein keyup-Prozedur; was nicht den Rahmen dieses thread.
Hier ist die Lösung, die ich Vorschlage.
InformationsquelleAutor der Antwort JeanPaul A.
InformationsquelleAutor der Antwort ketan pradhan
können Sie erreichen es wie folgt
hoffe, dies wird Ihnen helfen.
InformationsquelleAutor der Antwort Pardeep Jain
Müssen Sie mit type="number" statt text. Sie können auch angeben, max und min zahlen
InformationsquelleAutor der Antwort Zia Khan
Um dies zu erreichen, habe ich gebunden, eine Funktion, um das onInput-Methode wie diese:
(input)="stripText(infoForm.get('uin'))
Hier ist das Beispiel in meinem Formular:
Dann habe ich der folgenden Funktion meine Komponente:
Dieser regex
/[^0-9]/g
sucht für alles, was nicht eine Zahl ist, und mit.replace
ich es ersetzt durch nichts. Also, wenn ein Benutzer versucht, geben Sie ein Zeichen, das keine Zahl ist (in diesem Fall ein Charakter, der nicht null bis neun), es scheint so, als wäre nichts passiert, in das Textfeld ein.InformationsquelleAutor der Antwort Christopher
Wenn Sie nicht möchten, dass eine Richtlinie
https://stackblitz.com/edit/numeric-only
in component.html
Komponente.ts
InformationsquelleAutor der Antwort rashidnk
Einfach Erstellen Sie eine Richtlinie und fügen Sie unten hostlistener:
Ersetzen Sie den ungültigen text mit leer. Alle Tasten und Tastenkombinationen funktioniert nun in allen Browsern bis IE9.
InformationsquelleAutor der Antwort Gaurav Joshi
Verwenden
pattern
- Attribut für input wie unten:InformationsquelleAutor der Antwort Behnam Azimi
Mit Unterstützung für die Desinfektion der eingefügte Inhalt:
InformationsquelleAutor der Antwort mad_fox
Ist hier einfach: Einfache Richtlinie
Auf keydown-Ereignis überprüft die Länge des Schlüssels ist ein und der Schlüssel ist nicht eine Nummer zu
preventDefault()
und es nicht macht, char.HTML:
Einschränkungen: Es wird zulassen, einfügen mit einer Maus, die Art und Weise akzeptieren anderer char. Um zu vermeiden, dass Sie passieren kann das Modell als input für die Richtlinie und die
ngOnChage
für das Modell verändern Sie den Wert nur zahlen:Wie unten:
EDIT: Code Hinzugefügt, um zu erkennen, änderung in Modell und Aktualisierung der Eingabe mit dem Wert
HTML:
InformationsquelleAutor der Antwort Lahar Shah
vom @omeralper 's Antwort.
Ändere ich ein wenig, dass nicht akzeptieren Zeitraum ascii (keycode 110,190).
und verwenden lassen ch = (e.- Schlüssel); zu vergleichen mit dem regulären Ausdruck, wenn Sie die Sprache ändern (wie Thai oder Japanisch), die es nicht akzeptieren Charakter dieser Sprache
hoffe, dies hilft 🙂
InformationsquelleAutor der Antwort Supakorn Thongtra
Können Sie erstellen, die diese Prüfung und importieren Sie Sie in Ihre Komponenten.
Grundsätzlich überprüft die form-input string:
Implementieren Sie in Ihrem Projekt:
import in der Komponente
import { NumberValidator } from '../../validators/number.validator';
inputNumber: ['', [NumberValidator.isInteger]],
(change)="deleteCharIfInvalid()"
an den Eingang, wennform.get('inputNumber').hasError('isInteger')
isttrue
löschen Sie das Letzte Zeichen eingefügt.InformationsquelleAutor der Antwort guillefd
fromCharCode gibt 'a' beim drücken auf die numpad - '1' also das methoid sollte vermieden werden
(admin: kann nicht kommentieren wie üblich)
InformationsquelleAutor der Antwort fdsfdsfdsfds
Ich sah eine Menge Kommentare über den Umgang mit kopieren/einfügen.
Zur piggy back off " von @omeralper beantworten, können Sie hinzufügen fügen Sie Ereignishandler für das onlyNumber Richtlinie zu behandeln kopieren/einfügen:
Diese nur erlaubt, Inhalte zu kopieren, und einfügen in die textbox NUR, wenn es eine Zahl ist. Das ist die einfachste Lösung. Die änderung des Inhalts der Zwischenablage zu entfernen, non-numerics ist viel komplizierter und möglicherweise nicht es Wert sein.
Bekommen eingefügten text aus IE können Sie die folgenden verwenden:
InformationsquelleAutor der Antwort rdanielmurphy
Habe ich einige Modifikationen in der oben genannten Richtlinie und umgesetzt, min, max, maxlength.
InformationsquelleAutor der Antwort Karan Mistry
Muster für die Gültige Handy-Nummer
Muster('^((\+91-?)|0)?[0-9]{10}$')
Muster für akzeptieren nur die Nummer aus dem Textfeld
Muster('[0-9]*')
prasseln akzeptieren nur die Nummer mit der bestimmten Zahl e ist.g: Pincode.
Muster('^[0-9]{5}$')
InformationsquelleAutor der Antwort Satish Deokar
Use-Direktive zur Einschränkung der Benutzer, geben Sie nur zahlen in der folgenden Weise:
In HTML:
InformationsquelleAutor der Antwort Jayoti Parkash