2014-10-02 34 views
0

我有一個代碼,應該禁用一個按鈕時:registerForm.$invalid || form.password != form.passwordBis,這應該意味着:「禁用按鈕,如果表單無效或如果'$ scope.form。密碼'變量不等於'$ scope.form.passwordBis'。「,不是嗎?AngularJS ngDisabled沒有激活,因爲它應該是

所以在這裏我有一個代碼,如果兩個密碼匹配,激活按鈕。哪些不應該發生,因爲第一個條件仍然是錯誤的!

HTML:

<div ng-app="app" ng-controller="formCtrl"> 
    <form name="registerForm"> 
     <div class="header"> 
      <h2>Create your account</h2> 
     </div> 
     <div class="form-group"> 
      <div class="title">First Name</div> 
      <input type="text" name="firstName" ng-required class="form-control" ng-class="{empty:form.firstName.length==0}" ng-model="form.firstName" required></input> 
     </div> 
     <div class="form-group"> 
      <div class="title">Last Name</div> 
      <input type="text" name="lastName" ng-required class="form-control" ng-class="{empty:form.lastName.length==0}" ng-model="form.lastName" required></input> 
     </div> 
     <div class="form-group"> 
      <div class="title">Email</div> 
      <input type="email" name="email" ng-required class="form-control" ng-class="{empty:form.email.length==0}" ng-model="form.email" required></input> 
     </div> 
     <div class="form-group"> 
      <div class="title">Password</div> 
      <input type="password" name="password" class="form-control" ng-class="{empty:form.password.length==0}" ng-model="form.password" required></input> 
      <input type="password" name="passwordBis" class="form-control" ng-class="{empty:form.passwordBis.length==0}" ng-model="form.passwordBis" minlength="6" required></input> 
     </div> 
     <div ng-if="form.password != form.passwordBis" class="error">Passwords doesn't match.</div> 
     <div class="form-group"> 
      <button class="btn btn-success" ng-click="register()" ng-disabled="registerForm.$invalid || form.password != form.passwordBis">Register</button><br/> 
     </div> 
    </form> 
</div> 

JS:

var app = angular.module("app", []); 

app.controller("formCtrl", function($scope) { 
    $scope.form = { 
      firstName: "", 
      lastName: "", 
      email: "", 
      password: "", 
      passwordBis: "" 
    }; 
}); 

而且你可以測試一下:JSFiddle

我缺少什麼?

+0

在Chrome中工作得很好據我所知 – Scott 2014-10-02 20:56:51

+0

這很奇怪我在Chrome上,我試過Firefox。我仍然有這個問題。如果兩個密碼匹配,該按鈕不應該可用。 – Elfayer 2014-10-02 21:00:38

回答

2

從您的表單元素中刪除ng-required屬性。

對於表單元素,您應該使用ng-requiredrequired,但不能同時使用兩者。 ng-required需要一個需要評估爲true的表達式,以便根據需要標記表單元素,而required不需要任何值。有關更詳細的解釋,請參見https://stackoverflow.com/a/16648851/1237995

+0

我從程序的另一部分複製/粘貼了這段代碼,忘記刪除'ng-required'。謝謝 ! ;) – Elfayer 2014-10-02 21:50:21

相關問題