2016-08-19 58 views
0

驗證電子郵件AngularJS我的投入,其中使用可以鍵入電子郵件列表,並在這些輸入我想允許invaild輸入等輸入的標籤我有ng-model-options="{allowInvalid: true}",然後當用戶完成所有鍵入有電子郵件,他們擊中了一個提交按鈕,在控制器中調用我的功能enter()在控制器

在HTML我已經設置每個電子郵件輸入與ng-model="item.text"所以後來在控制器我可以依次通過我的電子郵件。這是我想檢查它們是否有效的地方。我怎樣才能做到這一點?

我上https://docs.angularjs.org/api/ng/input/input%5Bemail%5D看到myForm.input.$valid使用,所以我得到了所有的投入要素,並試圖inputEle.$valid但總是回來爲undefined

所以在我的環我都可以訪問兩個原始文本的用戶放在諸如:

[email protected]@email..com 
[email protected] 

而且我有機會獲得輸入元素一樣

<input type="email" placeholder="Email" ng-model="item.text" ng-model-options="{allowInvalid: true}" class="ng-not-empty ng-dirty ng-invalid ng-invalid-email ng-invalid-remove ng-valid-email-add ng-invalid-email-remove ng-touched" style=""> 

那麼如何在這在我的控制器循環可以驗證電子郵件?

感謝

回答

0

爲了檢查你有它設置「名稱」屬性控制器的輸入。例如:

<input type="email" name="email_name" placeholder="Email" ng-model="item.text" ng-model-options="{allowInvalid: true}" class="ng-not-empty ng-dirty ng-invalid ng-invalid-email ng-invalid-remove ng-valid-email-add ng-invalid-email-remove ng-touched" style=""> 

然後在控制你$訪問有效的屬性:

... 
if(myForm.email_name.$valid) { 
    ... 
} 
... 

例子:https://jsfiddle.net/vk94weuu/2/

+0

好了,所以如果我有輸入列表中的所有具有相同的名稱,例如「email_name」,我得到它們就像這樣'var emails = document.getElementsByName('email_name')',然後通過'emails'循環,所以在每次迭代中我都有'email'我可以做'if(email 。$有效)'? – iqueqiorio

+0

我不認爲在同一表單中命名兩個或多個輸入相同是個好主意。雖然可以採用不同的形式。如果輸入的數量不變,則以不同的名稱命名。如果沒有,那麼你可以嘗試這種方法:https://jsfiddle.net/vk94weuu/4/ –

+0

對不起,jsfiddle無法正常工作。更新:https://jsfiddle.net/vk94weuu/5/ –