2016-07-28 14 views
0

Verwenden Sie die Regex/^ [0-9] + $ /, um die Eingabe des Textfelds zu beschränken, nur Zahlen zu akzeptieren. Es funktioniert gut, aber wenn die Typen etwas wie +124 dann auch das Textfeld nicht als ungültig setzt.ng-Muster erlaubt '+' Zeichen, wenn Regex auf Ziffern beschränkt

<form name="myForm" novalidate> 
    <input type="number" ng-model="age" name="age" ng-pattern="/^[0-9]+$/" /> 
    <h3>Valid Status : {{myForm.age.$valid}}</h3> 
</form> 

Eingang: 123 Ausgang: myForm.age $ gültig - true

Eingang:. -123 Ausgang: myForm.age $ gültig - falsch

Eingang:. +123 Ausgang: myForm. . Alter $ gültig - true (sollte nicht wahr sein)

https://plnkr.co/edit/3OVE6qiWgJozUb3hyFQ5?p=preview

+1

Verwenden 'type = "text"' –

+0

@ WiktorStribiżew Warum kann es nicht mit type = "number" arbeiten ?? Mit type = "text" -Browsern können die Benutzer auch beliebige Zeichen eingeben. – vinnu313

+1

Nun, reguläre Ausdrücke arbeiten mit * string * -Eingabe, Regex-Engines erlauben keinen anderen * type * als Eingabe. Also, nur "password", "text" sind normalerweise gültige Typen, die mit einer Regex funktionieren. –

Antwort

0

Wenn Sie das Muster Arbeit machen wollen, können Sie das type Attributfestlegen müssen. Da Sie auch nur Ziffern in das Eingabefeld Benutzer möchten lassen geben, fügen Sie eine onkeypress Validierung:

<input type="text" onkeypress="return (event.charCode == 8 || event.charCode == 0) ? null : event.charCode >= 48 && event.charCode <= 57" ng-model="age" name="age" ng-pattern="/^[0-9]+$/" /> 

Eigentlich werden Sie nicht einmal die ng-Muster regex müssen dann.

-1

Sie können einfach verwenden:

ng-pattern="/^[0-9]+$/" 

Ohne den Eingangstyp Nummerneinstellung (als Standard es Text ist, und es sollte funktionieren).

Hier JSFiddle: https://jsfiddle.net/3ju3b2tu/1/

Verwandte Themen