2017-07-26 54 views
0

背景

我保留現存AngularJS應用「有效」類值。

我有一個基於正則表達式模式驗證的文本字段。

<input type="text" class="validate" name="recipientContact" id="recipientContact" ng-model="orderdata.recipient_contact" ng-pattern="/[(]([0-9]{3})[)]\s([0-9]{3})[-]([0-9]{4})/g" required> 

正則表達式驗證本身正在工作。我確認$ valid在輸入有效值時返回true,並且在輸入無效值時返回false。

<p ng-bind="orderForm.recipientContact.$valid && ordersaveFlag"></p> //returns true for valid values, returns false for invalid values 

問題

然而,問題是,角是增加輸入無效值即使「有效」類屬性值。

這不影響功能(輸入無效值時窗體停止),但它影響樣式(輸入元素邊框顏色變爲綠色而不是紅色)。

當我對元素執行「檢查」時,我確認「有效」類是動態添加的。爲什麼即使在$ valid爲false的情況下也會添加「有效」類? Angular「知道」文本字段是無效的,它應該添加「無效」類,這樣才能正確應用樣式。

這裏的時候輸入了無效值(與所有的動態添加類屬性值的)什麼檢查實際網頁上顯示。它應該添加類屬性值「invalid」而不是「valid」。

<input type="text" class="validate ng-invalid ng-touched ng-dirty ng-valid-parse ng-valid-required ng-invalid-pattern valid" name="recipientContact" id="recipientContact" ng-model="orderdata.recipient_contact" ng-pattern="/[(]([0-9]{3})[)]\s([0-9]{3})[-]([0-9]{4})/g" required> 

如何進一步調查此問題?謝謝!

回答

0

我能夠用ng級的條件解決這個問題。

<input type="text" ng-class="{'valid' : orderForm.recipientContact.$valid, 'invalid' : orderForm.recipientContact.$invalid}" name="recipientContact" id="recipientContact" ng-model="orderdata.recipient_contact" ng-pattern="/[(]([0-9]{3})[)]\s([0-9]{3})[-]([0-9]{4})/g" required> 

這篇文章是有幫助的:

AngularJS | Conditional Class using ng-class

相關問題