2016-08-19 54 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/ –