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 相关文章推荐
jQuery 连续列表实现代码
Dec 21 Javascript
js 3种归并操作的实例代码
Oct 30 Javascript
jquery实现图片按比例缩放示例
Jul 01 Javascript
使用jQuery jqPlot插件绘制柱状图
Dec 18 Javascript
Javascript基础教程之变量
Jan 18 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
Jul 06 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
Aug 01 Javascript
常用的js验证和数据处理总结
Aug 02 Javascript
jQuery获取select选中的option的value值实现方法
Aug 29 Javascript
JQuery实现DIV其他动画效果的简单实例
Sep 18 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
Jul 24 Javascript
ajaxfileupload.js实现上传文件功能
Apr 19 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
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
js获取ip和地区
2017/03/10 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
vue自定义表单生成器form-create使用详解
2019/07/19 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
纯css实现照片墙3D效果的示例代码
2017/11/13 HTML / CSS
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
英国创新设计文具、卡片和礼品包装网站:Paperchase
2018/07/14 全球购物
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
YII2 全局异常处理深入讲解
2021/03/24 PHP
文员岗位职责
2013/11/09 职场文书
食品安全责任书
2014/04/15 职场文书
解除合同协议书
2014/04/17 职场文书
活动总结怎么写
2014/04/28 职场文书
党员干部反四风对照检查材料思想汇报
2014/09/14 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
经营场所证明范本
2015/06/19 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
导游词之永济鹳雀楼
2020/01/16 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers
Python实现为PDF去除水印的示例代码
2022/04/03 Python
Android开发EditText禁止输入监听及InputFilter字符过滤
2022/06/10 Java/Android