AngularJs表单校验功能实例代码


Posted in Javascript onFebruary 09, 2017

废话不多说了,具体代码如下所示:

<!DOCTYPE html>
<html ng-app="angularFormCheckModule">
 <head>
  <meta charset="UTF-8">
  <title>angular表单校验</title>
  <link rel="stylesheet" href="../css/bootstrap.min.css" rel="external nofollow" />
  <style>
   span{
    color: red;
   }
  </style>
 </head>
 <body ng-controller="angularFormCheckCtrl">
  <!--使用angular校验,每一个校验的项都必须用ng-model,不然无法执行在脏检查,就无法校验-->
  <form name="angularForm" novalidate method="post">
   <table class="table table-bordered">
    <tr>
     <td>用户名</td>
     <td>
      <input type="number" required="required" ng-model="user.userName" name="userName" ng-minlength="6"/>
      <!--angularForm.userName.$dirty检查是否是第一次输入!网上有很多种方法校验是否是第一次输入-->
      <span class="warning" ng-show="angularForm.userName.$dirty && angularForm.userName.$error.required">*</span>
      <span class="warning" ng-show="angularForm.userName.$error.number">只能输入数字</span>
      <span class="warning" ng-show="angularForm.userName.$error.minlength">最少为6位数</span>
     </td>
    </tr>
    <tr>
     <td>密码</td>
     <td>
      <!--这里的id,一定要等于compare-pwd的值,因为指令里面是根据Id取值的-->
      <input type="password" required="required" ng-minlength="6" name="pwd" ng-model="user.password" id="pwd"/>
      <!--angularForm.pwd.$pristine首次输入,不太清楚的就自己运行,去掉条件一个一个的试!-->
      <span class="warning" ng-show="!angularForm.pwd.$pristine && angularForm.pwd.$error.required">*</span>
      <span class="warning" ng-show="angularForm.pwd.$error.minlength">最少为6位数</span>
     </td>
    </tr>
    <tr>
     <td>确认密码</td>
     <td>
      <!--这里compare-pwd的值,要等于被比较的对象的name属性值,即第一个密码框的name值-->
      <input type="password" required="required" name="pwd2" compare-pwd="pwd" ng-model="pwd2"/>
      <span class="warning" ng-show="angularForm.pwd2.$error.required">*</span>
      <!--注意这里的pwdmatch,是指令里面设置的-->
      <span class="warning" ng-show="angularForm.pwd2.$error.pwdmatch">X</span>
      <span class="warning" ng-show="angularForm.pwd2.$valid" style="color: green;">OK</span>
      <!--
       其实这种事最简单的校验方式,不用写指令!!!
       <span ng-show="user.password !=pwd2">两次密码输入不一致</span>       
      -->
     </td>
    </tr>
    <tr>
     <td>手机</td>
     <td>
      <!--pattern正则表达式校验输入内容-->
      <input type="number" required="required" name="phone" ng-model="user.phone" ng-pattern="/^1[3|4|5|7|8]\d{9}$/">
      <span class="warning" ng-show="angularForm.phone.$error.required">*</span>
      <span class="warning" ng-show="angularForm.phone.$error.number">只能输入数字</span>
      <span class="warning" ng-show="angularForm.phone.$error.pattern">手机格式不正确</span>
     </td>
    </tr>
    <tr>
     <td>邮箱</td>
     <td>
      <input type="email" required="required" ng-model="user.email" name="email"/>
      <span class="warning" ng-show="angularForm.email.$error.required">*</span>
      <span class="warning" ng-show="angularForm.email.$error.email">邮箱格式不正确</span>
     </td>
    </tr>
    <tr>
     <td>URL</td>
     <td>
      <input type="url" required="required" ng-model="user.url" name="url"/>
      <span class="warning" ng-show="angularForm.url.$error.required">*</span>
      <span class="warning" ng-show="angularForm.url.$error.url">URL格式不正确</span>
     </td>
    </tr>
    <tr>
     <td>(注:*为必填)</td>
     <td>
      <input type="submit" value="提交" ng-disabled="!angularForm.$valid" class="btn btn-success"/>
     </td>
    </tr>
   </table>
  </form>
 </body>
 <script type="text/javascript" src="../js/jquery.min.js" ></script>
 <script type="text/javascript" src="../js/angular-1.2.22.js" ></script>
 <script type="text/javascript" src="../js/angularFormCheck.js" ></script>
</html>

js代码(除了指令意外,没什么可用的,写出来只是为了,说一下mvc模式而已!)

var app = angular.module("angularFormCheckModule",[]);
/*这里使用MVC的模式(用来举例说明MVC而已)*/
app.controller("angularFormCheckCtrl",function($scope,angularFormCheckFactory){//function里的参数写你在函数里需要用到的
 $scope.testVar = angularFormCheckFactory.getTest();//这里就能取到$scope.testVar的值为---"练习angular表单校验";
 $scope.user = {};
 $scope.test= "sss";
});
/*自己可以去看factory、service、providers的区别(http://www.oschina.net/translate/angularjs-factory-vs-service-vs-provider)*/
/*用 Factory 就是创建一个对象,为它添加属性,然后把这个对象返回出来。*/
app.factory('angularFormCheckFactory',function(){
 //这里写自己的业务逻辑
 var test = "练习angular表单校验";
 var service = {};//自定义一个对象
 service.getTest = function(){//给对象添加方法
  return test;
 }
 return service;//返回自定义的service对象!!!
});
/*自定义指令--比较两个密码是否相等.angular的指令是驼峰的形式(这里是comparePwd页面就是compare-pwd)*/
app.directive('comparePwd',function(){
 /*angular 自定义指令,可上网自行查找*/
 return{
  require : 'ngModel',
  /*scope表示作用域,elem表示使用这个指令的元素对象(这里指第二个密码框),attrs。。。ctrl。。。*/
  link : function(scope,elem,attrs,ctrl){
   /*写自己的业务逻辑*/
   //注意这样取值的话,第一密码框的Id值必须要设置且必须与第二个密码框的compare-pwd属性的值相同
   var firstPwdIdObj = "#" + attrs.comparePwd;
   $(elem).add(firstPwdIdObj).on('keyup',function(){
    /*手动执行脏检查*/
    scope.$apply(function(){
     //$(firstPwdIdObj).val()表示第一个密码框的值。elem.val()表示第二个密码框的值
     var flag = elem.val() === $(firstPwdIdObj).val();
     //alert(flag+",--"+elem.val()+",--"+$(firstPwdIdObj).val());
     ctrl.$setValidity("pwdmatch",flag);//flag,表示是否相等。pwdmatch用于$error时的标识符,注意看页面,$setValidity是require中ngModel的方法!
    });
   });
  }
 }
});

下面看一段代码关于AngularJs获取焦点与失去焦点时的表单验证

<!DOCTYPE html> 
<html ng-app="formExample"> 
<head> 
  <meta charset="UTF-8"> 
  <title></title> 
  <script src="../js/angular.js"></script> 
  <script> 
    angular.module('formExample', []) 
        .controller('FormController', ['$scope', function($scope) 
        { 
          $scope.userType = 'guest'; 
          $scope.change = false; 
        }]); 
  </script> 
</head> 
<body> 
<form name="myForm" ng-controller="FormController"> 
  userType: <input name="input" ng-model="userType" ng-blur="change=true" ng-focus="change=false" required> 
  <span class="error" ng-show="myForm.input.$error.required && change">必填项</span><br> 
</form> 
</body> 
</html>

以上所述是小编给大家介绍的AngularJs表单校验功能实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
做网页的一些技巧
Feb 01 Javascript
js与jQuery 获取父窗、子窗的iframe
Dec 20 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
Oct 28 Javascript
JavaScript生成福利彩票双色球号码
May 15 Javascript
对于jQuery性能的一些优化建议
Aug 13 Javascript
基于JavaScript实现焦点图轮播效果
Mar 27 Javascript
jQuery实现页码跳转式动态数据分页
Dec 31 jQuery
vue如何判断dom的class
Apr 26 Javascript
微信小程序实现长按删除图片的示例
May 18 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
Jan 21 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
Nov 26 Javascript
TypeScript 运行时类型检查补充工具
Sep 28 Javascript
javascript 显示全局变量与隐式全局变量的区别
Feb 09 #Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
Feb 09 #Javascript
简单谈谈Javascript函数中的arguments
Feb 09 #Javascript
javascript 中设置window.location.href跳转无效问题解决办法
Feb 09 #Javascript
微信小程序之picker日期和时间选择器
Feb 09 #Javascript
BootStrap 弹出层代码
Feb 09 #Javascript
jQuery插件form-validation-engine正则表达式操作示例
Feb 09 #Javascript
You might like
世界第一个无线广播电台 KDKA
2021/03/01 无线电
使用无限生命期Session的方法
2006/10/09 PHP
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
PHP中OpenSSL加密问题整理
2017/12/14 PHP
解决laravel资源加载路径设置的问题
2019/10/14 PHP
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
JavaScript实现身份证验证代码
2016/02/17 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
python遍历类中所有成员的方法
2015/03/18 Python
介绍Python中几个常用的类方法
2015/04/08 Python
Python利用itchat对微信中好友数据实现简单分析的方法
2017/11/21 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
python模拟表单提交登录图书馆
2018/04/27 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
python hashlib加密实现代码
2019/10/17 Python
Django框架反向解析操作详解
2019/11/28 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
2020/02/29 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
Dockers美国官方网站:卡其裤、男士服装、鞋及配件
2016/11/22 全球购物
机电一体化大学生求职信
2013/11/08 职场文书
医院院务公开实施方案
2014/05/03 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
挂靠协议书
2015/01/27 职场文书
会计工作能力自我评价
2015/03/05 职场文书
关于童年的读书笔记
2015/06/26 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
2022漫威和DC电影上映作品
2022/04/05 欧美动漫
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python