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 相关文章推荐
利用js的Node遍历找到repeater的一个字段实例介绍
Apr 25 Javascript
js实现倒计时(距离结束还有)示例代码
Jul 24 Javascript
iframe父页面获取子页面参数的方法
Feb 21 Javascript
jQuery $命名冲突解决方案汇总
Nov 13 Javascript
node.js中的querystring.stringify方法使用说明
Dec 10 Javascript
jQuery实现tag便签去重效果的方法
Jan 20 Javascript
Javascript毫秒数用法实例
Feb 05 Javascript
使用JavaScript 实现的人脸检测
Mar 24 Javascript
jquery实现两个图片渐变切换效果的方法
Jun 25 Javascript
Bootstrap每天必学之下拉菜单
Nov 25 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
Aug 16 Javascript
深入理解Vue.js轻量高效的前端组件化方案
Dec 10 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
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
Laravel手动分页实现方法详解
2016/10/09 PHP
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
两个比较有用的Javascript工具函数代码
2010/02/17 Javascript
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
基于javascript滚动图片具体实现
2013/11/18 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
OpenLayers3实现对地图的基本操作
2020/09/28 Javascript
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
Python3基础之基本数据类型概述
2014/08/13 Python
python3如何将docx转换成pdf文件
2018/03/23 Python
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
python获取中文字符串长度的方法
2018/11/14 Python
python 同时读取多个文件的例子
2019/07/16 Python
Python Django 添加首页尾页上一页下一页代码实例
2019/08/21 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
商铺租赁意向书
2014/04/01 职场文书
教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
小学端午节活动总结
2015/02/11 职场文书
工作感言一句话
2015/08/01 职场文书
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS
Kubernetes控制节点的部署
2022/04/01 Servers
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS