2017-07-13 10 views
0

送信ボタンのng-disabledディレクティブの追加チェックを追加すると、次のコード(W3Schoolsから取得)が機能しません。 "myForm.email。$ untouched"も使用したいので、誰かがすぐにページに行き、フィールドが空の場合は送信ボタンが無効になります。しかし、私がそれを追加すると、どこかをクリックしなければならず、ボタンが有効になるだけです。 (どこかにクリックする必要があります)AngularJSフォームの検証が期待通りに機能しない

<!DOCTYPE html> 
<html> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 

<body> 

    <h2>Validation Example</h2> 

    <form ng-app="myApp" ng-controller="validateCtrl" name="myForm" novalidate> 

     <p>Email: 
      <br> 
      <input type="email" name="email" ng-model="email" required> 
      <span style="color:red" ng-show="myForm.email.$dirty && myForm.email.$invalid"> 
    <span ng-show="myForm.email.$error.required">Email is required.</span> 
      <span ng-show="myForm.email.$error.email">Invalid email address.</span> 
      </span> 
     </p> 

     <p> 
      <button ng-disabled="myForm.email.$dirty && myForm.email.$invalid">Absenden</button> 
     </p> 

    </form> 

    <script> 
     var app = angular.module('myApp', []); 
     app.controller('validateCtrl', function($scope) { 
      $scope.user = 'John Doe'; 
      $scope.email = ''; 
     }); 
    </script> 

</body> 

</html> 

はこれにコードを変更したいが、それは働いていない:

<p> 
<button 
ng-disabled="myForm.email.$untouched || myForm.email.$dirty && myForm.email.$invalid">Absenden</button> 
</p> 
+0

「$手作りなし」の代わりに$ pristine'を使用してください – akinjide

答えて

1

この条件を試してみてくださいあなたは

を変更する必要があります
<p> 
<button 
ng-disabled="myForm.email.$untouched || myForm.email.$dirty && myForm.email.$invalid">Absenden</button> 
</p> 

から

<p> 
<button 
ng-disabled="myForm.email.$dirty && myForm.email.$invalid || myForm.email.$pristine">Absenden</button> 
</p> 
+0

ありがとう、それはトリックでした! – YourReflection

0

<p> 
    <button ng-disabled="myForm.email.$touched && myForm.email.$dirty && myForm.email.$invalid">Absenden</button> 
</p> 
関連する問題