• Angular实现注册系统


    Angular是Google开发的前端技术框架,下载地址:https://code.angularjs.org/1.5.0/angular.js

    通过对angular的简单理解后发现,angular通过一些简单的指令即可实现对DOM元素的操作,其特色为双向数据绑定

    下面,让我们通过angualr来实现注册系统表单验证。

    首先看一下页面效果(通过bootstrap实现的布局样式):

    当我们点击提交按钮时,会根据表单验证,若通过,则没有提示语句,若不通过,则会弹出响应提示语句,当然该功能可以通过其他简单方式实现,这里只是通过实战对angular进一步深入理解。

    页面布局代码如下:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <meta http-equiv="X-UA-Compatible" content="IE=edge">    //设置按照edge浏览器渲染方式渲染
     6     <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">  //设置页面宽度,缩放比例,用户不能缩放
     7     <title>注册</title>
     8     <link rel="stylesheet" href="bootstrap.min.css">
     9     <style>
    10         input {
    11             outline: none; //去掉chrome浏览器输入框内的蓝色边框
    12         }
    13     </style>
    14 </head>
    15 <body ng-app="myApp">
    16     <div ng-controller="myCtr">
    17         <div class="container">
    18             <h2 class="text-center">注册系统</h2>
    19             <div class="row">
    20                 <form name="myForm" class="form-horizontal">
    21                     <div class="form-group">
    22                         <div class="col-xs-3 col-xs-offset-1">
    23                             <lable for="username">用户名:</lable>
    24                         </div>
    25                         <div class="col-xs-8">
    26                             <input id="username" type="text" ng-model="data.username" name="username" ng-required="true">  //ng-required="true"是设置输入框内必须填写内容,下同
    27                         </div>
    28                     </div>
    29                     <div class="form-group">
    30                         <div class="col-xs-3 col-xs-offset-1">
    31                             <lable for="tel">电话:</lable>
    32                         </div>
    33                         <div class="col-xs-8">
    34                             <input id="tel" type="text" ng-model="data.tel" name="tel" ng-pattern="/^1d{10}$/" ng-required="true"> //ng-pattren="/XXX/"是设置正则验证,下同
    35                             
    36                         </div>
    37                     </div>
    38                     <div class="form-group">
    39                         <div class="col-xs-3 col-xs-offset-1">
    40                             <lable for="address">地址:</lable>
    41                         </div>
    42                         <div class="col-xs-8">
    43                             <input id="address" type="text" ng-model="data.address" name="address" ng-required="true">
    44                         
    45                         </div>
    46                     </div>
    47                     <div class="form-group">
    48                         <div class="col-xs-3 col-xs-offset-1">
    49                             <lable for="email">邮箱:</lable>
    50                         </div>
    51                         <div class="col-xs-8">
    52                             <input id="email" type="text" ng-model="data.email" name="email" ng-pattern="/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/" ng-required="true">
    53                         </div>
    54                     </div>
    55                     <div class="col-xs-8 col-xs-offset-4 text-danger" style="height:30px;overflow:hidden;">
    56                         <p ng-show="myForm.username.$invalid && myForm.username.$dirty">请填写用户名</p>
    57                         <p ng-show="myForm.tel.$invalid && myForm.tel.$dirty">请填写正确电话</p>
    58                         <p ng-show="myForm.address.$invalid && myForm.address.$dirty">请填写地址</p>
    59                         <p ng-show="myForm.email.$invalid && myForm.email.$dirty">请填写正确邮箱</p>
    60                         <p ng-show="showAllErr">请填写</p>
    61                     </div>
    62                     <div class="form-group">
    63                         <div class="col-xs-12">
    64                             <input class="btn btn-success" type="submit" style="100%" ng-click="check()">
    65                         </div>
    66                     </div>
    67                 </form>
    68             </div>
    69         </div>
    70         
    71     </div>
    72 <script src="angular.min.js"></script>
    73 </body>
    74 </html>

    如上页面布局代码,记得引入bootstrap.css;angular.js,ng-required;ng-pattern 功能等同于H5新属性:required; pattern, 另外还有disabled;readonly(ng-disbaled;ng-readonly),本文后面会介绍其用法。

    js代码:

     1     var app =  angular.module("myApp", []);
     2     app.controller("myCtr", function($scope) {
     3         $scope.data = {};      //存放用户输入的内容,便于后台调用
     4         $scope.showAllErr = false; //默认不显示提示信息
     5         $scope.check = function(){
     6             $scope.showAllErr= $scope.myForm.$invalid; //当内容不合法时,显示内容(此时$invalid=true),可以console.log($scope);找到$invalid,$dirty,$valid,$pristine
     7             if($scope.myForm.$valid){
     8                 console.log($scope.data); //控制台打印用户输入的内容
     9             }    
    10         }11    })

    注意:

    可以console.log($scope);找到$invalid,$dirty,$valid,$pristine(意思:不合法,被修改,合法,没被修改)

    打开控制台,找到console.log($scope);打印的内容,找到表单name字段,即可找到以上四个属性,同样找到表单内输入框中的name字段也可找到以上四个属性。

    在此之前,我们要为表单添加name字段,比如我设置为 name="myForm", 所以即可找 myForm 即可,input同样

    下面是提示语部分,单独拿出来说一下:

    1 <div class="col-xs-8 col-xs-offset-4 text-danger" style="height:30px;overflow:hidden;">
    2                     <p ng-show="myForm.username.$invalid && myForm.username.$dirty">请填写用户名</p>
    3                     <p ng-show="myForm.tel.$invalid && myForm.tel.$dirty">请填写正确电话</p>
    4                     <p ng-show="myForm.address.$invalid && myForm.address.$dirty">请填写地址</p>
    5                     <p ng-show="myForm.email.$invalid && myForm.email.$dirty">请填写正确邮箱</p>
    6                     <p ng-show="showAllErr">请填写</p>
    7 </div>

    style="height:30px;overflow:hidden;">,设置只是显示一行;

    ng-show="myForm.username.$invalid && myForm.username.$dirty",默认状态下我们没有提交当然合法,而且也没有修改;又由于$scope.showAllErr = false;

    所以什么提示语也不现实,但是当这些条件一旦满足,myForm.username.$invalid=true  &&  myForm.username.$dirty=true,便会显示以上提示语中对应内容,至于

    显示那一条,根据对应的字段显示,若是username,那就是“请填写用户名”,email字段,那就……(字段即 name="XXX",自己为不同的输入框定义不同字段即可,当然了

    上面提到过他们也有:$invalid,$dirty,$valid,$pristine 这四个属性)

    若是什么也不填写,那就是表单不合法,即 $scope.myForm.$invalid=true,提示 “请填写”。

    再说说ng-disabled;ng-readonly:

    将上述代码加入下面内容:

    1 <div class="col-xs-8">
    2    <input id="address" type="text" ng-model="data.address" name="address" ng-required="true" ng-disabled="isDis">
    3    <button ng-click="myTogTwo()">toggTwo</button>
    4 </div>
    1 <div class="col-xs-8">
    2     <input id="tel" type="text" ng-model="data.tel" name="tel" ng-pattern="/^1d{10}$/" ng-required="true" ng-readonly="isWr">
    3     <button ng-click="myTogOne()">toggOne</button>
    4 </div>
    1         $scope.isDis = false;
    2         $scope.isWr = false;
    3         $scope.myTogOne = function(){
    4             $scope.isWr =  !$scope.isWr;
    5         }
    6         $scope.myTogTwo = function(){
    7             $scope.isDis =  !$scope.isDis;
    8  }

        便可以通过点击按钮实现输入框只读与可写、可用不可用之间的切换

    补充两个事件:ng-change;ng-submit

    ng-change:用来检测用户输入是否发生变化

    ng-submit:用来检测表单提交事件,只可用于form元素(意只对表单本身有效)

    异乡小龟
  • 相关阅读:
    postman环境和全局变量设置语句
    2016 GitHub章鱼猫观察报告之开源统计
    Multiload-ng
    忠告初学者学习Linux系统的8点建议
    真有用?Snap和Flatpak 通吃所有发行版的打包方式。
    教你如何在Kali Linux 环境下设置蜜罐?
    下一代GNU/Linux显示服务Wayland 1.12正式发布
    为 Github 创造 Integration
    简单易懂的crontab设置工具集
    爆料喽!!!开源日志库Logger的剖析分析
  • 原文地址:https://www.cnblogs.com/scale/p/6192806.html
Copyright © 2020-2023  润新知