AngularJS入门教程之表单校验用法示例


Posted in Javascript onNovember 02, 2016

本文实例讲述了AngularJS表单校验用法。分享给大家供大家参考,具体如下:

表单数据的校验对于提高WEB安全性意义不大,因为服务器接收到的请求不一定来自我们的前端页面,有可能来自别的站点,黑客可以自己做一个表单,把数据提交到我们的服务器(即跨站伪造请求),这样就绕过了前端页面的校验。如果对HTTP协议比较熟,甚至还可以在程序中手动构造一段HTTP请求发到服务器,所以服务器端的数据校验绝对是必不可少的。

WEB前端数据校验的意义在于改善用户体验,用户不用等到?⑹?萏峤坏椒?衿骱蟛胖?滥男┦?菔遣缓戏ǖ摹?/p>

使用AngularJS对表单元素进行校验是相当方便的,我们来看一下可以在input元素上使用的所有校验选项。

1.必填项

验证某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可:

<input type="text" required />

2. 最小长度

验证表单输入的文本长度是否大于某个最小值,在输入字段上使用AngularJS指令ng-minleng= "{number}":

<input type="text" ng-minlength="5" />

3. 最大长度

验证表单输入的文本长度是否小于或等于某个最大值,在输入字段上使用AngularJS指令ng-maxlength="{number}":

<input type="text" ng-maxlength="20" />

4. 模式匹配

使用ng-pattern="/PATTERN/"来确保输入能够匹配指定的正则表达式:

<input type="text" ng-pattern="[a-zA-Z]" />

5. 电子邮件

验证输入内容是否是电子邮件,只要像下面这样将input的类型设置为email即可:

<input type="email" name="email" ng-model="user.email" />

6. 数字

验证输入内容是否是数字,将input的类型设置为number:

<input type="number" name="age" ng-model="user.age" />

7. URL

验证输入内容是否是URL,将input的类型设置为 url:

<input type="url" name="homepage" ng-model="user.facebook_url" />

我们看一下具体的一个案例代码:

<!DOCTYPE html>
<html ng-app="loginMod">
<head lang="en">
  <meta charset="UTF-8">
  <script type="text/javascript" src="angular-1.3.0.14/angular.js"></script>
  <script type="text/javascript" src="angular-1.3.0.14/angular-messages.js"></script>
  <title>tutorial06_1</title>
  <style>
    input.ng-invalid {
      border: 1px solid red;
    }
    input.ng-valid {
      border: 1px solid green;
    }
  </style>
</head>
<body>
<div>
  <form name="loginForm" novalidate ng-submit="login()" ng-controller="LoginController">
    <div style="width:280px;float:left">
      <label>用户名:</label>
      <input type="text" placeholder="请输入用户名" name="uname" ng-model="uname" ng-minlength=
          3 ng-maxlength=10 required />
    </div>
    <div class="error" ng-messages="loginForm.uname.$error" style="color:red;">
      <div ng-message="required">用户名不能为空</div>
      <div ng-message="minlength">用户名长度至少为3</div>
      <div ng-message="maxlength">用户名长度不能超过10</div>
    </div>
    <br/><br/>
    <button type="submit">提交</button>
  </form>
</div>
<script>
  var loginMod = angular.module('loginMod', ['ngMessages']);
  loginMod.controller("LoginController",function($scope,$log){
    $scope.login = function()
    {
      $log.info("点击了按钮");
    }
  });
</script>
</body>
</html>

表单校验作为AngularJs的一个ngMessages模块封装在angular-messages.js文件中,我们必须引入它:

<script type="text/javascript" src="angular-1.3.0.14/angular-messages.js">

除此之外还要告诉AngularJs??gMessages作为应用程序的依赖模块引入,像下面这个样子:

var loginMod = angular.module('loginMod', ['ngMessages']);

required指定文本框为必输项,ng-minlength指定最小长度,ng-maxlength指定最大长度,校验工作是AngularJs内部完成的,我们只需要定义不满足条件时的提示信息:

<div class="error" ng-messages="loginForm.uname.$error" style="color:red;">
  <div ng-message="required">用户名不能为空</div>
  <div ng-message="minlength">用户名长度至少为3</div>
  <div ng-message="maxlength">用户名长度不能超过10</div>
</div>

最后我们在浏览器中看一下效果:

AngularJS入门教程之表单校验用法示例

我们还可以把提示信息写在一个单独的errors.html文件中:

<div ng-message="required">用户名不能为空</div>
<div ng-message="minlength">用户名长度至少为3</div>
<div ng-message="maxlength">用户名长度不能超过10</div>

然后在页面中使用ng-messages-include属性引入这些信息:

<div class="error" ng-messages="loginForm.uname.$error"
   style="color:red;" ng-messages-include="errors/errors.html">
</div>

AngularJS源码可点击此处本站下载

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
node.js中的fs.readFile方法使用说明
Dec 15 Javascript
JavaScript之AOP编程实例
Jul 17 Javascript
js中数组插入、删除元素操作的方法
Feb 15 Javascript
jQuery中绑定事件bind() on() live() one()的异同
Feb 23 Javascript
js实现音频控制进度条功能
Apr 01 Javascript
AngularJS中下拉框的基本用法示例
Oct 11 Javascript
详解angularjs 学习之 scope作用域
Jan 15 Javascript
Vue中使用vee-validate表单验证的方法
May 09 Javascript
微信小程序new Date()方法失效问题解决方法
Jul 29 Javascript
微信小程序swiper实现文字纵向轮播提示效果
Jan 21 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
Mar 09 Javascript
javascript自定义加载loading效果
Sep 15 Javascript
JQuery Ajax WebService传递参数的简单实例
Nov 02 #Javascript
ASP.NET jquery ajax传递参数的实例
Nov 02 #Javascript
Javascript 正则表达式校验数字的简单实例
Nov 02 #Javascript
在JSP中如何实现MD5加密的方法
Nov 02 #Javascript
AngularJS入门教程之过滤器用法示例
Nov 02 #Javascript
JavaScript基础——使用Canvas绘图
Nov 02 #Javascript
js实现砖头在页面拖拉效果
Nov 20 #Javascript
You might like
php4的彩蛋
2006/10/09 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
thinkPHP5.0框架应用请求生命周期分析
2017/03/25 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
Django 中 cookie的使用
2017/08/17 PHP
jquery photoFrame 图片边框美化显示插件
2010/06/28 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
document.documentElement的一些使用技巧
2013/04/18 Javascript
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
Vue递归实现树形菜单方法实例
2018/11/06 Javascript
js中call()和apply()改变指针问题的讲解
2019/01/17 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
python查询mysql,返回json的实例
2018/03/26 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
Django Rest framework权限的详细用法
2019/07/25 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
Python读取YAML文件过程详解
2019/12/30 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
个人简历自我评价范文
2014/02/04 职场文书
北京奥运会口号
2014/06/21 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书
Pygame Rect区域位置的使用(图文)
2021/11/17 Python
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技