2016-05-11 7 views
0

これは私の部分的な見解の一部です。関数内の入力値が未定義です

<div class="form-group row"> 
    <label for="password" class="col-sm-2 form-control-label">Password</label> 
    <div class="col-sm-10"> 
     <input type="password" class="form-control" id="password" placeholder="Password" ng-model="password" required> 
    </div> 
    </div> 

    <div class="form-group row"> 
    <label for="confirmPassword" class="col-sm-2 form-control-label">Confirm Password</label> 
    <div class="col-sm-10"> 
     <input type="password" class="form-control" id="confirmPassword" placeholder="Confirm Password" required> 
    </div> 
    </div> 

これは私のコントローラの一部である -

self.password = document.getElementById("password"); 
     self.confirmPassword = document.getElementById("confirmPassword"); 

     angular.element(self.confirmPassword).on("input", function() { 
      var closest = self.confirmPassword.closest('div'); 
      console.log(self.password.value); //undefined 
      if(self.password.value != self.confirmPassword.value) { 
        closest.classList.remove("has-success"); 
        closest.className += " has-error"; 
      } else { 
       closest.classList.remove("has-error"); 
       closest.className += " has-success"; 
      }; 
     }); 

self.password.value関数内で定義されていないのはなぜ。私の最終的な目標は、パスワードがパスワードを確認するのと等価でない場合にクラスhas-errorを追加し、パスワードがパスワードを確認するのと等しい場合はクラスhas-successを追加することです。

+0

これを確認してください。 'document.getElementById'を使って要素にアクセスするのではなく、データバインディングとディレクティブを使うことを提案していますが、https://plnkr.co/edit/9GwoINvY4Gl5ZBvBo19Q?p=previewでうまく動作します。 – S4beR

答えて

1

コードには多くのエラーがあります。

  • 最初にコントローラは、ディレクティブのリンク機能 になるまで、ビューにアクセスしないでください。
  • 次のイベント "input"は存在しません。あなたが したい場合は、角度でフォームの検証を使用する場合は、これを読ん https://docs.angularjs.org/api/ng/directive/ngClass
  • 、あなたのビューでいくつかのカスタムクラスを持っている利用NG-クラス:https://docs.angularjs.org/guide/forms
関連する問題