javascriptangularjsng-submitangularjs-ng-disabled

Angularjs - How to disable submit button if any value exceeds the ng-repeat element value


I have such type of program.

var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
  $scope.records = [
    {
      "Amt" : "500",
      
    },
    {
      "Amt" : "800",
     
    },
    {
      "Amt" : "1580",
    },
    {
      "Amt" : "1122",
    }
  ]
  
  $scope.value=function(d, x)
  {
    x.balance = x.Amt - d;
    if(d > x.Amt){
    $scope.isExceeded = true;
  } else {
    
    $scope.isExceeded = false;
  }  
  }
});
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body ng-app="myApp">

<table ng-controller="myCtrl" border="1">
  <tr>
  <td>Amt</td>
  <td>Balance</td> 
  <td>Entered Amt</td>
  <td ng-if="error"> Error</td>
</tr>
<tr ng-repeat="x in records">
  <td>{{x.Amt}}</td>
  <td>{{x.balance}}</td>
   <td><input type="text" ng-model="d" ng-change="value(d, x)"></td>  
  <td ng-if="d > x.Amt" ng-model="error">Please enter less than {{x.Amt}}</td>
</tr>
<tr>
  <td colspan="4"><input type="button" value="Submit" ng-disabled="isExceeded"></td>
</tr>
</table>

</body>
</html>

What I want is submit button should become disable if any Entered Amt value exceeds the Amt value.

I m not getting an idea of how can I achieve this type of condition.I an new to angularjs.


Solution

  • You can have an variable isExceeded and use it in the angular markup with ng-disable directive to disable the button.

    <body ng-app="myApp">   
       <table ng-controller="myCtrl" border="1">
         <tr>
           <td>Amt</td>
           <td>Balance</td> 
           <td>Entered Amt</td>
           <td ng-if="error"> Error</td>
         </tr>
         <tr ng-repeat="x in records">
           <td>{{x.Amt}}</td>
           <td>{{x.balance}}</td>
           <td><input type="text" ng-model="d" ng-change="value(d, x)"></td>  
           <td ng-if="d > x.Amt" ng-model="error">Please enter less than {{x.Amt}}</td>
         </tr>
         <tr>
           <td colspan="4" ng-disable="isExceeded"><input type="button" value="Submit"></td>
         </tr>
       </table>    
    </body>
    

    and check it in the angular controller like

    $scope.value=function(d, x)
    {
      if(d > x.Amt){
        $scope.isExceeded = true;
      } else {
        x.balance = x.Amt - d;
        $scope.isExceeded = false;
      }  
    }