2013-11-25 292 views
0

我想要實現的是兩個輸入字段,我想比較一下。如果相同,表格必須有效。否則,無效。這是代碼:

<form name="form" class="css-form" novalidate> 
E-mail: <input type="email" placeholder="[email protected]" 
      ng-model="user.email" name="uEmail" required/> 
    <span class="error" ng-show="form.uEmail.$error.email"> 
     Not valid email!</span> 



Repeat e-mail: <input type="email" placeholder="[email protected]" 
      ng-model="repEmail" required/> 
    <span ng-if="user.email != repEmail"> 
     E-mail address are not same! 
     </span> 
</form> 

問題是,儘管這些領域都不盡相同,這是真的:

form.$valid == true 

因此,如何更改表格的有效性,以便它可以是假的如果輸入的字段不一樣(儘管它們是有效的電子郵件地址)

+1

看到這個http://stackoverflow.com/questions/14012239/password-check-directive-in-angularjs 希望它能幫到你 – Alexei

回答

1

你可以在這裏使用兩種方法。你可以使用angular-ui's驗證器指令(這可能是最簡單的方法),或者你可以寫你自己的指令。

如果你決定使用角UI的驗證,它會是這個樣子:

<input name="email" required ng-model="user.email"> 
<input name="confirm_email" 
    ui-validate=" '$value==email' " 
    ui-validate-watch=" 'email' "> 
<span ng-show="form.confirm_emal.$error.validator">Emails do not match!</span> 
+0

我很欣賞這裏,但我有興趣編寫一個定製的驗證器!我已經提出了一個單獨的具體問題,你能夠回答它嗎? http://stackoverflow.com/questions/20982751/custom-form-validation-directive-to-compare-two-fields – asfallows

0

只是改變類型電子郵件

Repeat e-mail: <input type="email" placeholder="[email protected]" 
      ng-model="repEmail" required/> 

編輯:

,而不是僅僅使用
form.$valid
使用
form.$valid && user.email == repEmail

+0

沒關係。重要的是他們必須平等。正如你所說,它可能也是電子郵件,但問題不是 – Asqan

+0

爲你提交的頁面,有2件事情
1.)形式應該是有效的。 。這可以從形式實現$有效,設置repEmail類型之後是電子郵件
2)電子郵件和repEmail相等
如此,而不是僅僅使用
如果(形式爲$有效)提交()。
使用if(form。$ valid && $ scope.user.email!= $ scope.repEmail)submit – CodingNinja