2017-10-17 1 views
1

Ich versuche, eine US-amerikanische Telefonnummer Validierung ###-###-####, Am ng-Muster und tel-Mask-Richtlinie ..AngularJS Validierung nicht funktioniert auf copy-paste

zu erstellen, wenn ich einfach copy-paste 1234567890, es funktioniert gut, aber und

Wenn eine gültige Telefonnummer copy-Paste und entfernen sie es, und wieder copy-paste dann Fehler gegeben ..

Hier arbeitet jsFiddle: https://jsfiddle.net/9xrx87mw/1/

+1

Sie entfernen die Bindestriche, und das Muster unterstützt keine Werte ohne sie. Machen Sie sie optional, ['ng-pattern ="/^ [0-9] {3} - [0-9] {3} - [0-9] {4,5} $/"'] (https : //jsfiddle.net/9xrx87mw/2/) –

+0

Danke @Wiktor Stribiżew, Es funktioniert wie erwartet –

Antwort

1

Im JS-Code entfernen Sie die Bindestriche von der Nummer, und das Muster erfordert die Bindestriche vorhanden sein. Machen Sie sie optional und verwenden

ng-pattern="/^[0-9]{3}-?[0-9]{3}-?[0-9]{4,5}$/" 
        ^  ^

die updated demo See.

Die angezeigten Werte werden später erneut erstellt, so dass die ? Quantifizierer, die das Übereinstimmen von 1 oder 0 Vorkommen des quantifizierten Untermusters ermöglichen, wie erwartet funktionieren.

+0

Zuerst des Dankes für oben .. Aber wenn ich eine gültige Telefonnummer eingeben und klicken Sie außerhalb der Box (Unschärfe-Ereignis) und versuchen Sie es erneut Geben Sie etwas extra ein (Buchstaben oder Buchstaben) Geben Sie einen Fehler ein, Können Sie eine Lösung vorschlagen? –

+0

Sorry, ich habe versucht, diesen Teil zu überprüfen, aber es scheint damit zu tun, wie und wann die Zeichenfolge an die Regex übergeben wird, und das macht die Frage bereits zu weit. Beachten Sie jedoch, dass die Bindestriche nach dem Entfernen im Muster optional sein müssen. –

Verwandte Themen