Angular form validation ng-disabled not working

angularjs, forms, html, javascript, validation

Solution

You're missing `ng-model` on every field of your form. Keep in mind when you mention `ng-model` on any form field at that time `ng-model` creates the extra objects inside form name object with that specific `name` attribute which then considered while form validation like `$error`, `$valid`, `$invalid`, etc.

As your form `name` is `blgoPost`, when angular compile this page,it internally creates the object inside the scope of the name of `blgoPost`. And the all the input fields which has `name` & `ng-model` assign to them gets added inside that `blgoPost` object. But if you don't mention `ng-model` to the form fields then it will never get added inside the `blgoPost` form object.

HTML

<form role='form' name='blgoPost' novalidate="">
    <input name="first" />
    <div class='form-group'>
        <label for='blgoTitle'>Title</label>
        <input name='title' type="title" class='form-control' ng-model="test1" placeholder='Technologies of the Future' required="">
        <br>
        <label for='blgoContent'>Content</label>
        <textarea name='content' rows='8' type="content" ng-model="test2" class='form-control' placeholder='The technical innovations of the future will be diverse and impactful on the individual......' required=""></textarea>
        <br>
        <label for='blgoPassCode'>PassCode</label>
        <input name='passcode' type="passcode" ng-model="test3" class='form-control' placeholder='&#8226;&#8226;&#8226' required="" />
        <br/>
        <button type="submit" class='btn btn-primary' ng-disabled="blgoPost.$invalid">Submit Post</button>
    </div>
</form>

Working Fiddle

Problem

I am trying to use the angular form validations in my form for a blog post, and more specifically a ng-disabled form. For reasons I cannot figure out the submit button is not disabled, where as it should be unless all three input fields are valid. Thanks for the help. this is my blog template ``` <div ng-controller='BlgoCtrl'> <div class='container'> <h1> Teewinot Blgo</h1> <div class="row"> <div class='col-md-12'> <form role='form' name='blgoPost' novalidate> <div class='form-group'> <label for='blgoTitle'>Title</label> <input name='title' type="title" class='form-control' placeholder='Technologies of the Future' required><br> <label for='blgoContent'>Content</label> <textarea name='content' rows='8' type="content" class='form-control' placeholder='The technical innovations of the future will be diverse and impactful on the individual......' required></textarea><br> <label for='blgoPassCode'>PassCode</label> <input name='passcode' type="passcode" class='form-control' placeholder='&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;' required><br> <button type="submit" class='btn btn-primary' ng-disabled="blgoPost.$invalid">Submit Post</button> </div> </form> </div> </div> ``` Here is my index.html ``` <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Teewinot</title> <script src="bower_components/angular/angular.js"></script> <script src="bower_components/jquery/dist/jquery.js"></script> <script src="bower_components/bootstrap/dist/js/bootstrap.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script src="bower_components/angular-route/angular-route.js"></script> <link href="bower_components/bootstrap/dist/css/bootstrap.css" rel="stylesheet"> </head> <body ng-app="Teewinot"> <ng-include src="'app/templates/partials/navbar.html'"></ng-include> <ng-view></ng-view> <!-- angular module defintion and reoutes --> <script src="app/js/app.js"></script> <script src="app/js/routes.js"></script> <!-- controllers --> <script src="app/js/controllers/blog.controller.js"></script> </body> </html> ``` This is my blog controller ``` angular.module('Teewinot').controller('BlgoCtrl', function($scope, $http) { 'use strict' }); ```

Original source