2016-07-28 25 views
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的。 。年齡$有效 - 真(不應該是真實的)

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

+1

使用'型= 「文本」' –

+0

@WiktorStribiżew爲什麼不能具有type = 「數字」 工作嗎?使用type =「text」瀏覽器,用戶可以輸入任意字符。 – vinnu313

+1

好吧,正則表達式使用* string *輸入,正則表達式引擎不允許任何其他*類型*作爲輸入。所以,只有「密碼」,「文本」通常是有效的類型,將與正則表達式一起工作。 –

回答

0

如果你想使模式的工作原理,你需要將type屬性設置爲text。既然你也需要讓用戶鍵入只有數字到輸入字段,添加一個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/

相關問題