AngularJS 入门4-表单和验证
2017-06-18 13:37
513 查看
AngularJS
入门4-表单和验证
或 false,可以使用
ng-model 指令绑定
<input type="checkbox" ng-model="myVar">
,可以有不同的值,但只有被选中的单选按钮的值会被使用。
<form>
选择一个选项:
<input type="radio" ng-model="myVar" value="dogs">Dogs
<input type="radio" ng-model="myVar" value="tuts">Tutorials
<input type="radio" ng-model="myVar" value="cars">Cars
</form>
<form>
选择一个选项:
<select ng-model="myVar">
<option value="">
<option value="dogs">Dogs
<option value="tuts">Tutorials
<option value="cars">Cars
</select>
</form>
<!DOCTYPE html>
<html>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
<body>
<form ng-app="myApp" ng-controller="validateCtrl" name="myForm" novalidate>
<p>用户名:<br>
<input type="text" name="user" ng-model="user" required>
<span style="color:red" ng-show="myForm.user.$dirty && myForm.user.$invalid">
<span ng-show="myForm.user.$error.required">用户名是必须的。</span>
</span>
</p>
<p>邮箱:<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">邮箱是必须的。</span>
<span ng-show="myForm.email.$error.email">非法的邮箱。</span>
</span>
</p>
<p>
<input type="submit" ng-disabled="myForm.user.$dirty && myForm.user.$invalid || myForm.email.$dirty && myForm.email.$invalid">
</p>
</form>
<script>
var app = angular.module('myApp', []);
app.controller('validateCtrl', function($scope) {
$scope.user = 'John Doe';
$scope.email = 'john.doe@gmail.com';
});
</script>
</body>
</html>
2.form中不能有action属性。提交交由ng-submit处理
3.每个input一定要有ng-model,最好有一个name方便引用。然后用require或者ng-minlength之类才起作用
<form name="form" novalidate="novalidate">
<label name="email">Your email</label>
<input type="email" name="email" ng-model="email" placeholder="Email Address" />
</form>
注:novalidate屏蔽浏览器对表单的默认验证行为,它将会阻止默认的HTML5验证,因为这会由我们自己来做。
注:用了type=”email”之类就不能用ng-minlength ng-pattern之类了,而且email验证的时候github上有人提出了其他问题,https://github.com/angular/angular.js/issues/5899,看来对于type=”email”和
url之类要使用的时候多注意,我的建议是尽量不用。如果需要请写自定义验证。下面我会介绍,确实是有够蛋疼之处。由于这种问题,所以我写的表单不会出现type=”email”
type=”url”
type=”number”之类。
访问表单属性
访问表单属性: <form name>.<angular property>
访问一个输入框属性: <form name>.<input name>.<angular property>
范例:
<form name="userForm" novalidate>
<input type="text" name="username" class="form-control" ng-model="username" ng-minlength="3" ng-maxlength="8">
<p ng-show="userForm.username.$valid" class="help-block">验证已通过</p>
<p ng-show="userForm.username.$invalid" class="help-block">验证未通过</p>
<p ng-show="userForm.username.$pristine" class="help-block">未修改过</p>
<p ng-show="userForm.username.$dirty" class="help-block">已修改过</p>
</form>
错误消息$error
1 普通用法
<form name="userForm" novalidate>
<input type="text" name="username" class="form-control" ng-model="username" ng-minlength="3" ng-maxlength="8">
<p ng-show="userForm.username.$error" class="help-block">用户名出错</p>
</form>
2 $error的具体类型
注:对于ng-minlength,ng-maxlength,ng-pattern的写法userForm.username.$error.minlength
<form name="userForm" novalidate>
<input type="text" name="username" class="form-control" ng-model="username" ng-minlength="3" ng-maxlength="8">
<p ng-show="userForm.username.$error.required" class="help-block">用户名是必须的</p>
<p ng-show="userForm.username.$error.minlength" class="help-block">用户名太短</p>
<p ng-show="userForm.username.$error.maxlength" class="help-block">用户名太长</p>
</form>
. 你可以私有定制化这些类来实现特定的场景应用.
input.ng-invalid {
border: 1px solid red;
}
input.ng-valid {
border: 1px solid green;
}
入门4-表单和验证
1.AngularJS 表单
①文本输入框
<input type="text" ng-model="firstname">②复选框
checkbox 的值为 true或 false,可以使用
ng-model 指令绑定
<input type="checkbox" ng-model="myVar">
③单选框
单选框使用同一个 ng-model,可以有不同的值,但只有被选中的单选按钮的值会被使用。
<form>
选择一个选项:
<input type="radio" ng-model="myVar" value="dogs">Dogs
<input type="radio" ng-model="myVar" value="tuts">Tutorials
<input type="radio" ng-model="myVar" value="cars">Cars
</form>
④下拉菜单
ng-model 属性的值为你在下拉菜单选中的选项:<form>
选择一个选项:
<select ng-model="myVar">
<option value="">
<option value="dogs">Dogs
<option value="tuts">Tutorials
<option value="cars">Cars
</select>
</form>
2.AngularJS 输入验证
实例:<!DOCTYPE html>
<html>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
<body>
<form ng-app="myApp" ng-controller="validateCtrl" name="myForm" novalidate>
<p>用户名:<br>
<input type="text" name="user" ng-model="user" required>
<span style="color:red" ng-show="myForm.user.$dirty && myForm.user.$invalid">
<span ng-show="myForm.user.$error.required">用户名是必须的。</span>
</span>
</p>
<p>邮箱:<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">邮箱是必须的。</span>
<span ng-show="myForm.email.$error.email">非法的邮箱。</span>
</span>
</p>
<p>
<input type="submit" ng-disabled="myForm.user.$dirty && myForm.user.$invalid || myForm.email.$dirty && myForm.email.$invalid">
</p>
</form>
<script>
var app = angular.module('myApp', []);
app.controller('validateCtrl', function($scope) {
$scope.user = 'John Doe';
$scope.email = 'john.doe@gmail.com';
});
</script>
</body>
</html>
①构建一个ng表单
1.确保form上标签有一个name属性,像下面的例子一样。最好再加一个novalidate=”novalidate”2.form中不能有action属性。提交交由ng-submit处理
3.每个input一定要有ng-model,最好有一个name方便引用。然后用require或者ng-minlength之类才起作用
<form name="form" novalidate="novalidate">
<label name="email">Your email</label>
<input type="email" name="email" ng-model="email" placeholder="Email Address" />
</form>
注:novalidate屏蔽浏览器对表单的默认验证行为,它将会阻止默认的HTML5验证,因为这会由我们自己来做。
②增添验证规则
必填项验证 | 验证表单输入是否已填写,添加HTML5标记required即可 <input type="text" required /> |
最小长度 | 验证表单输入的文本长度是否大于某个最小值,添加指令ng-minleng= "{number}" <input type="text" ng-minlength="5" /> |
最大长度 | 验证表单输入的文本长度是否小于或等于某个最大值,添加指令ng-maxlength="{number}": <input type="text" ng-maxlength="20" /> |
模式匹配 | 使用ng-pattern="/PATTERN/"来确保输入能够匹配指定的正则表达式: <input type="text" ng-pattern="/[a-zA-Z]/" /> |
电子邮件 | 验证输入内容是否是电子邮件,只要像下面这样将input的类型设置为email即可: <input type="email" name="email" ng-model="user.email" /> |
数字 | 验证输入内容是否是数字,将input的类型设置为number: <input type="number" name="age" ng-model="user.age" /> |
URL < 4000 /td> | 验证输入内容是否是URL,将input的类型设置为 url: <input type="url" name="homepage" ng-model="user.facebook_url" /> |
url之类要使用的时候多注意,我的建议是尽量不用。如果需要请写自定义验证。下面我会介绍,确实是有够蛋疼之处。由于这种问题,所以我写的表单不会出现type=”email”
type=”url”
type=”number”之类。
③表单属性 $valid, $invalid, $pristine, $dirty,$error
属性类 | 应用的CSS类 | 描述 |
$valid | ng-valid | Boolean 告诉我们这一项当前基于你设定的规则是否验证通过 |
$invalid | ng-invalid | Boolean 告诉我们这一项当前基于你设定的规则是否验证未通过 |
$pristine | ng-pristine | Boolean 如果表单或者输入框没有使用则为True |
$dirty | ng-dirty | Boolean 如果表单或者输入框有使用到则为True |
访问表单属性: <form name>.<angular property>
访问一个输入框属性: <form name>.<input name>.<angular property>
范例:
<form name="userForm" novalidate>
<input type="text" name="username" class="form-control" ng-model="username" ng-minlength="3" ng-maxlength="8">
<p ng-show="userForm.username.$valid" class="help-block">验证已通过</p>
<p ng-show="userForm.username.$invalid" class="help-block">验证未通过</p>
<p ng-show="userForm.username.$pristine" class="help-block">未修改过</p>
<p ng-show="userForm.username.$dirty" class="help-block">已修改过</p>
</form>
错误消息$error
1 普通用法
<form name="userForm" novalidate>
<input type="text" name="username" class="form-control" ng-model="username" ng-minlength="3" ng-maxlength="8">
<p ng-show="userForm.username.$error" class="help-block">用户名出错</p>
</form>
2 $error的具体类型
注:对于ng-minlength,ng-maxlength,ng-pattern的写法userForm.username.$error.minlength
<form name="userForm" novalidate>
<input type="text" name="username" class="form-control" ng-model="username" ng-minlength="3" ng-maxlength="8">
<p ng-show="userForm.username.$error.required" class="help-block">用户名是必须的</p>
<p ng-show="userForm.username.$error.minlength" class="help-block">用户名太短</p>
<p ng-show="userForm.username.$error.maxlength" class="help-block">用户名太长</p>
</form>
④设置样式
AngularJS根据表单属性状态自动添加和删除CSS类,例如当某个字段中的输入非法时,.ng-invlid类会被添加到这个字段上。 你可以编辑自己喜欢的CSS. 你可以私有定制化这些类来实现特定的场景应用.
input.ng-invalid {
border: 1px solid red;
}
input.ng-valid {
border: 1px solid green;
}
输入状态 | 应用的CSS类 |
$invalid | ng-invalid |
$valid | ng-valid |
$pristine | ng-pristine |
$dirty | ng-dirty |
required | ng-valid-required或ng-invalid-required |
min | ng-valid-min或ng-invalid-min |
max | ng-valid-max或ng-invalid-max |
pattern | ng-valid-pattern或ng-invalid-pattern |
url | ng-valid-url或ng-invalid-url |
email | ng-valid-email或ng-invalid-email |
date | ng-valid-date或ng-invalid-date |
number | ng-valid-number or ng-invalid-number |
相关文章推荐
- AngularJs 入门系列-2 表单验证
- AngularJS入门基础——表单验证
- javascript入门·表单与表单元素总结(表单验证)
- jquery validate.js表单验证的基本用法入门
- PEAR::HTML_QuickForm入门[4]--表单数据验证
- 【转载】表单验证<AngularJs>
- jquery validate.js表单验证的基本用法入门--不用写繁琐的验证代码了...
- javascript入门·表单与表单元素总结(表单验证)
- JavaScript 表单验证入门
- jquery validate.js表单验证的基本用法入门发布
- 1.jQuery插件Validation(表单验证)之基础入门
- jquery validate.js表单验证的基本用法入门
- jquery validate.js表单验证的基本用法入门
- jquery validate.js表单验证的基本用法入门
- 走进AngularJs(九)表单及表单验证
- jquery validate.js表单验证的基本用法入门
- (译) 在AngularJS中使用的表单验证功能
- Angularjs系列之表单验证
- 走进AngularJs(九)表单及表单验证
- AngularJS表单验证(上) 2014.6.18