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.
我试图在我的表单中使用角形式验证作为博客文章,更具体地说是禁用ng表格。由于原因,我无法弄清楚提交按钮未被禁用,除非所有三个输入字段都有效,否则应该在哪里。谢谢您的帮助。
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='•••••••••••••••' 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
这是我的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'
});
1 个解决方案
#1
20
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.
您在表单的每个字段上都缺少ng-model。请记住,当你在任何表单字段中提到ng-model时,ng-model在表单名称对象中创建额外的对象,该对象具有特定的name属性,然后在表单验证时考虑,如$ error,$ valid,$ invalid等。
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.
由于您的表单名称是blgoPost,当angular编译此页面时,它会在blgoPost名称的范围内部创建对象。并且所有具有名称&ng-model的输入字段都将添加到blgoPost对象中。但是如果你没有在表单字段中提到ng-model,那么它将永远不会被添加到blgoPost表单对象中。
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='•••' required="" />
<br/>
<button type="submit" class='btn btn-primary' ng-disabled="blgoPost.$invalid">Submit Post</button>
</div>
</form>
#1
20
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.
您在表单的每个字段上都缺少ng-model。请记住,当你在任何表单字段中提到ng-model时,ng-model在表单名称对象中创建额外的对象,该对象具有特定的name属性,然后在表单验证时考虑,如$ error,$ valid,$ invalid等。
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.
由于您的表单名称是blgoPost,当angular编译此页面时,它会在blgoPost名称的范围内部创建对象。并且所有具有名称&ng-model的输入字段都将添加到blgoPost对象中。但是如果你没有在表单字段中提到ng-model,那么它将永远不会被添加到blgoPost表单对象中。
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='•••' required="" />
<br/>
<button type="submit" class='btn btn-primary' ng-disabled="blgoPost.$invalid">Submit Post</button>
</div>
</form>