JavaScript框架之AngularJS学习——表单校验

AngularJS学习——表单校验


Web前端数据校验的意义在于改善用户体验,用户不用等到将数据提交到服务器就知道哪些数据是不合法的,这样也能够减轻应用服务器的压力。


AngularJS表单校验模式

为说明AngularJS在作用域中会维护一个状态属性,举例说明

eg:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>模板</title>
	<script src="../lib/angular-1.6.5/angular.min.js"></script>
<body ng-app>
	<form>
		<input type="text" ng-model="name">
	</form>
</body>
</html>
在Chrome浏览器中打开该页面控制台,查看input相关属性


AngularJS框架启动时会自动为ng-model所在标签添加CSS样式。

对于这些CSS样式,AngularJS在作用域中会维护一个状态属性与之对应。


对应关系:

CSS样式与状态属性对应关系
CSS样式状态属性描述
ng-valid$valid表单输入合法
ng-invalid$invalid表单输入不合法
ng-pristine$pristine表单元素未被使用
ng-dirty$dirty表单元素被使用
ng-touched$touched元素获取焦点
ng-untouched $untouched 元素失去焦点
ng-empty$empty元素内容为空
我们只需要关注这些状态的值即可知道表单输入数据是否合法。

eg:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>模板</title>
	<script src="../lib/angular-1.6.5/angular.min.js"></script>
<body ng-app>
	<form name="user">  
		<input type="email" name="email" ng-model="email" required/>
		<span ng-show="user.email.$invalid">内容输入不合法</span>
	</form>
</body>
</html>
使用required属性指定输入框必须输入,且数据类型必须与设置一致。

常用AngularJS表单校验相关的属性和指令

eg:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>模板</title>
	<script src="../lib/angular.min.js"></script>
	<style>
		input.ng-invalid{
			border:#f00 1px solid;
		}
	</style>
</head>
<body ng-app="">
	<form name="user">
		<div>
			<label>Email:</label>
			<input type="email"
				name="email"
				minlength="10"
				maxlength="20"
				ng-model="email"
				required/>
			<span ng-show="user.email.$error.required">内容不能为空</span>
			<span ng-show="user.email.$error.minlength">长度不能小于10</span>
			<span ng-show="user.email.$error.maxlength">长度不不能大于20</span>
			<span ng-show="user.email.$error.email">不符合Email格式</span>
		</div>
	</form>
</body>
</html>
上面例子对输入数据要求:类型为email,最小长度为10,最大长度为20,必须输入。
复制代码查看相关效果,观察控制台中span标签的class变化。

ngMessages模块
ngMessages模块是AngularJS1.3之后新增的表单验证相关的模块。
使用是需要在页面中引入
<script src="../lib/angular-1.6.5/angular-messages.js"></script>
在自定义模块中添加ngMessages模块的依赖
<script>
	angular.module("myApp",["ngMessages"]);
</script>
eg:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>ngMessage模块</title>
	<script src="../lib/angular-1.6.5/angular.min.js"></script>
	<!-- ngMessages模块 -->
	<script src="../lib/angular-1.6.5/angular-messages.js"></script>
</head>
<body ng-app="myApp">
	<form name="exampleForm" class="elegant-aero">

		<label>用户名:</label>
		<input type="text" name="userFirstName" ng-model="firstName" required/>
		<div ng-messages="exampleForm.userFirstName.$error">
			<div ng-message="required">姓名不能为空</div>
		</div>

		<label>邮箱地址:</label>
		<input type="email" name="userEmail" ng-model="userEmail" required/>
		<div ng-messages="exampleForm.userEmail.$error">
			<div ng-message="required">Email不能为空</div>
			<div ng-message="email">Email地址不合法</div>
		</div>

		<label>手机号码:</label>
		<input type="email" name="userPhoneNumber" ng-model="phoneNumber" ng-pattern="/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/" required/>
		<div ng-messages="exampleForm.userPhoneNumber.$error">
			<div ng-message="required">手机号不能为空!</div>
			<div ng-message="pattern">手机号码不合法!</div>
		</div>
		
		<label>留言信息</label>
		<textarea type="text" name="userMessage" ng-model="message" ng-maxlength="100" ng-minlength="10" required/></textarea>
		<div ng-messages="exampleForm.userMessage.$error" >
			<div ng-message="required">用户留言不能为空</div>
			<div ng-message="maxlength">留言信息长度不能多于100个字符!</div>
			<div ng-message="minlength">留言信息长度不能少于10个字符</div>
		</div>

		<label>测试</label>
		<input type="text" name="test" ng-model="test" required/>
		<div ng-messages="exampleForm.test.$error">
			<div ng-message="required">内容不能为空</div>
		</div>
	</form>
	<script>
		angular.module("myApp",["ngMessages"]);
	</script>
</body>
</html>
ng-messages也是用到前面的$error对象,ng-message指令用于定义具体某一条表单输入不合法输入时的提示信息。
例子中,可以看到有的ng-messages包含多个错误提示信息,如:留言信息,有三种错误类型提示。如果同时出现三种错误,则按照ng-message指令从上到下的顺序提示第一条匹配的错误信息。
如果错误信息提示相同,则可以将相同的错误信息放在一个文件中,然后通过ng-messages-include指令引入。
<div ng-messages="exampleForm.userMessage.$error" ng-messages-include="errors/errors.html"></div>













以上笔记整理自个人学习,用做个人学习分享

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值