0

正規表現/^[0-9] + $ /を使用して、数字だけを入力できるようにテキストボックスの入力を制限します。それはうまくいきますが、タイプが+124のようなものであっても、テキストボックスを無効として設定していません。正規表現が数字に限定されている場合、ng-patternは '+'文字を許可します

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

入力:123出力:myForm.age $有効 - 真

入力:-123出力:。myForm.age $有効 - 偽

入力:123出力:あるmyForm。年齢、有効な$ - 。真(trueであるべきではありません)

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

+1

使用 'タイプ= "テキスト"'WiktorStribiż[email protected] –

+0

は、なぜそれがタイプ= "数" を操作することはできません? type = "text"では、ユーザーは任意の文字を入力することができます。 – vinnu313

+1

正規表現は* string * inputで動作しますが、正規表現エンジンは他の*タイプ*を入力として許可しません。だから、 'password'、' text'だけが通常正規表現で動作する有効な型です。 –

答えて

0

あなたはパターンの仕事をしたい場合は、あなたがにtype属性を設定する必要があります。あなたはまた、ユーザーが入力フィールドにのみ桁の数字を入力してみましょうonkeypress検証を追加したいので:

<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]+$/" /> 

実際に、あなたも、その後NGパターン正規表現を必要としません。

-1

あなただけ使用することができます。

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

番号に入力タイプを設定せずに(デフォルトとして、それはテキストであり、それは正常に動作する必要があります)。ここで

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

関連する問題