Angularjs ngDisabled comparison expression not evaluating correctly

21,118

Solution 1

Remove the curlies around your ng-disabled attribute.

Solution 2

Here's the way it worked for your plunk:

<input type="button" value="Continue" ng-disabled="startertext != inputfield">

Don't forget to remove the extra curlie in your controller (marked by an error sign when I opened it in the editor).

Share:
21,118
Simon McClive
Author by

Simon McClive

Updated on July 09, 2022

Comments

  • Simon McClive
    Simon McClive almost 2 years

    I am attempting to have a button be enabled or disabled in an angularjs app based on whether a comparison of two text fields evaluates to true or false. I have provided example code below and also made it available in a plunker here http://plnkr.co/edit/rzly8hy21048YGzsx2gW?p=preview

    As you can see when you input a string to match the stored string the expression evaluates correctly however the button never becomes available.

    Any help would be appreciated.

    Here is the HTML

        <!DOCTYPE html>
    <html ng-app="plunker">
    
      <head>
        <meta charset="utf-8" />
        <title>AngularJS Plunker</title>
        <script>document.write('<base href="' + document.location + '" />');</script>
        <link rel="stylesheet" href="style.css" />
        <script data-require="[email protected]" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js" data-semver="1.2.16"></script>
        <script src="app.js"></script>
      </head>
    
      <body ng-controller="MainCtrl">
        <button ng-click="updateCounter()">Increment count</button>
        <input type="text" ng-model="inputfield">
        <input type="button" value="Continue" ng-disabled="{{inputfield !== startertext}}">
        <br>startertext: {{startertext}}
        <br>nputfield: {{inputfield}}
        <br>test: {{inputfield !== startertext}}
    
      </body>
    
    
    </html>
    

    And the Javascript file is below.

    var app = angular.module('plunker', []);
    
    app.controller('MainCtrl', function($scope) {
      $scope.startertext = 'hello world';
    });
    
  • Simon McClive
    Simon McClive almost 10 years
    Feel like an idiot, been tinkering with this for a while and actually added them in. Working flawlessly!