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 相关文章推荐
浅析Js中的单引号与双引号问题
Nov 06 Javascript
JavaScript使用循环和分割来替换和删除元素实例
Oct 13 Javascript
理解jQuery stop()方法
Nov 21 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
Dec 05 Javascript
JavaScript使用replace函数替换字符串的方法
Apr 06 Javascript
easyui Droppable组件实现放置特效
Aug 19 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
Oct 08 Javascript
基于vue2实现左滑删除功能
Nov 28 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
Jan 03 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
Aug 24 jQuery
js设置默认时间跨度过程详解
Jul 17 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
Nov 21 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
php分页示例代码
2007/03/19 PHP
PHP magento后台无法登录问题解决方法
2016/11/24 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
JavaScript 全角转半角部分
2009/10/28 Javascript
jQuery :first选择器使用介绍
2013/08/09 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
js控制表单操作的常用代码小结
2013/08/15 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
js使用心得分享
2015/01/13 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
2015/02/26 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
如何使用JS在HTML中自定义字符串格式化
2017/07/20 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
2017/08/24 Javascript
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
2019/12/10 Javascript
Node.js文本文件BOM头的去除方法
2020/11/22 Javascript
详解Numpy中的广播原则/机制
2018/09/20 Python
Python对象与引用的介绍
2019/01/24 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
房屋继承公证书
2014/04/10 职场文书
工作说明书范文
2014/05/07 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
文艺演出主持词
2015/07/01 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
2016年小学生迎国庆广播稿
2015/12/18 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python