2017-10-17 45 views
1

我試圖創建一個美國的電話號碼驗證###-###-####,採用NG-模式和電話面膜指令..Angularjs驗證不工作的複製粘貼

如果我做簡單的複製粘貼1234567890,它工作正常,但和

當複製粘貼一個有效的電話號碼,並刪除它, 並再次複製粘貼然後給出錯誤..

這裏是工作的jsfiddle:https://jsfiddle.net/9xrx87mw/1/

+1

您刪除連字符,並且該模式不支持沒有它們的值。使它們成爲可選項,['ng-pattern =「/^[0-9] {3} - ?[0-9] {3} - ?[0-9] {4,5} $ /」'](https ://jsfiddle.net/9xrx87mw/2/) –

+0

感謝@WiktorStribiżew,它按預期工作 –

回答

1

在JS代碼中,您從數字中刪除連字符,並且模式要求連字符存在。讓它們可選並使用

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

查看updated demo

顯示的值將在稍後重新生成,因此允許匹配1或0個量化子模式的量化符將按預期工作。

+0

首先感謝以上..但是,當我輸入有效的電話號碼並點擊框外(模糊事件),並再次嘗試輸入一些額外的(字母或無數字字母)它給錯誤,你能提出一個解決方案。 –

+0

對不起,我試圖檢查該部分,但它似乎與字符串如何以及何時傳遞給正則表達式有關,並且已經使問題太寬泛。請記住,一旦你刪除了連字符,它們在模式中必須是可選的。 –