最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

AngularJS學(xué)習(xí)筆記之表單驗(yàn)證功能實(shí)例詳解

 更新時(shí)間:2017年07月06日 11:42:22   作者:Annexu1991  
這篇文章主要介紹了AngularJS學(xué)習(xí)筆記之表單驗(yàn)證功能,結(jié)合實(shí)例形式分析了AngularJS針對(duì)表單的校驗(yàn)、監(jiān)控等相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了AngularJS學(xué)習(xí)筆記之表單驗(yàn)證功能。分享給大家供大家參考,具體如下:

一、執(zhí)行基本的表單驗(yàn)證

<!DOCTYPE html>
<html ng-app='exampleApp'>
  <head>
    <meta charset="UTF-8">
    <title>表單</title>
    <script src="../../js/angular.min.js" type="text/javascript" charset="utf-8"></script>
    <link rel="stylesheet" type="text/css" href="../../css/bootstrap.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" />
    <link rel="stylesheet" type="text/css" href="../../css/bootstrap-theme.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" />
    <script type="text/javascript">
      angular.module('exampleApp',[])
      .controller('defaultCtrl',function($scope){
        $scope.addUser=function(userDetails){
          $scope.message=userDetails.name+"("+userDetails.email+")("+userDetails.agreed+")"
        }
        $scope.message='Ready';
      });
    </script>
  </head>
  <body>
    <div id="todoPanel" class="panel" ng-controller='defaultCtrl'>
      <form name='myForm' novalidate ng-submit='addUser(newUser)'>
        <div class="well">
          <div class="form-group">
            <label for="">Name:</label>
            <input type="text" name='userName' class="form-control" required ng-model='newUser.name'/>
          </div>
          <div class="form-group">
            <label for="">Email:</label>
            <input type="email" name='userEmail' class="form-control" required ng-model='newUser.email'/>
          </div>
          <div class="checkbox">
            <label for="">
              <input type="checkbox" ng-model='newUser.agreed' required />
              I agree to the terms and conditions
            </label>
          </div>
          <button type="submit" class="btn btn-primary btn-block" ng-disabled='myForm.$invalid'>OK</button>
        </div>
        <div class="well">
          message:{{message}}
          <div>
            valid:{{myForm.$valid}}
          </div>
        </div>
      </form>
    </div>
  </body>
</html>

在上述例子中,該HTML文檔被瀏覽器加載時(shí)的初始狀態(tài)是:有三個(gè)input元素以及一個(gè)被禁用且無法單擊的ok按鈕,當(dāng)在文本框中輸入值并且勾選了復(fù)選框之后,按鈕將變?yōu)榭捎茫瑥亩试S用戶提交表單。

1、增加表單元素

(1)首先需要在form上設(shè)置一個(gè)name屬性
(2)需要給表單增添novalidate屬性,該屬性用于告訴瀏覽器不要自己校驗(yàn)表單,從而允許AngularJS不受干擾的工作
(3)ng-submit指令為表單提交事件指定一個(gè)自定義的響應(yīng)行為,將在用戶提交表單時(shí)觸發(fā)

2、使用校驗(yàn)屬性

(1)為各個(gè)想要驗(yàn)證的元素添加name屬性,這樣可以訪問到Angularjs所提供的各種特殊的變量
(2)設(shè)置type屬性,這個(gè)屬性指定了input元素將要接收的數(shù)據(jù)類型,這些類型告訴angularjs需要什么樣的校驗(yàn)
(3)指定required屬性,這個(gè)屬性指定用戶必須為待校驗(yàn)的表單提供一個(gè)輸入值
(4)在本例中input元素都使用ng-model指令來設(shè)置隱式定義的newUser對(duì)象的一個(gè)屬性

3、監(jiān)控表單的有效性

AngularJS中用來替換標(biāo)準(zhǔn)表單元素的指令定義了一些特殊的變量,可以用來檢查表單中各個(gè)元素或整個(gè)表單的有效性狀態(tài)。

$pristine:如果用戶沒有與元素/表單產(chǎn)生交互,則返回true
$dirty:如果用戶與元素/表單產(chǎn)生過交互,則返回true
$valid:當(dāng)元素/表單內(nèi)容的校驗(yàn)結(jié)果為有效時(shí)則返回true
$invalid:當(dāng)元素/表單內(nèi)容的校驗(yàn)結(jié)果為無效時(shí)則返回true
$error:提供校驗(yàn)錯(cuò)誤的詳情信息

二、提供表單校驗(yàn)反饋信息

在上面的例子中展示的效果是比較簡單的,ok按鈕將一直被禁用,直到所有的input元素可用,以阻止用戶輸入錯(cuò)誤格式的或未填完的數(shù)據(jù)。在接下來我們將演示AngularJS為報(bào)告實(shí)時(shí)的校驗(yàn)信息

1、使用css提供校驗(yàn)反饋信息

ng-pristine:用戶未曾交互過的元素被添加到這個(gè)類
ng-dirty:用戶曾經(jīng)交互過的元素被添加到這個(gè)類
ng-valid:校驗(yàn)結(jié)果為有效的元素在這個(gè)類中
ng-invalid:校驗(yàn)結(jié)果為無效的元素在這個(gè)類中

下面我們來看具體用法:

<!DOCTYPE html>
<html ng-app='exampleApp'>
  <head>
    <meta charset="UTF-8">
    <title>表單</title>
    <script src="../../js/angular.min.js" type="text/javascript" charset="utf-8"></script>
    <link rel="stylesheet" type="text/css" href="../../css/bootstrap.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" />
    <link rel="stylesheet" type="text/css" href="../../css/bootstrap-theme.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" />
    <script type="text/javascript">
      angular.module('exampleApp',[])
      .controller('defaultCtrl',function($scope){
        $scope.addUser=function(userDetails){
          $scope.message=userDetails.name+"("+userDetails.email+")("+userDetails.agreed+")"
        }
        $scope.message='Ready';
      });
    </script>
    <style type="text/css">
      form .ng-invalid.ng-dirty{background-color: lightpink;}
      form .ng-valid.ng-dirty{background-color: lightgreen;}
      span.summary.ng-invalid{color: red;font-weight: bold;}
      span.summary.ng-valid{color: green;}
    </style>
  </head>
  <body>
    <div id="todoPanel" class="panel" ng-controller='defaultCtrl'>
      <form name='myForm' novalidate ng-submit='addUser(newUser)'>
        <div class="well">
          <div class="form-group">
            <label for="">Name:</label>
            <input type="text" name='userName' class="form-control" required ng-model='newUser.name'/>
          </div>
          <div class="form-group">
            <label for="">Email:</label>
            <input type="email" name='userEmail' class="form-control" required ng-model='newUser.email'/>
          </div>
          <div class="checkbox">
            <label for="">
              <input type="checkbox" ng-model='newUser.agreed' required />
              I agree to the terms and conditions
            </label>
          </div>
          <button type="submit" class="btn btn-primary btn-block" ng-disabled='myForm.$invalid'>OK</button>
        </div>
        <div class="well">
          message:{{message}}
          <div>
            valid:
            <span class="summary" ng-class="myForm.$valid?'ng-valid':'ng-invalid'">
              {{myForm.$valid}}
            </span>
          </div>
        </div>
      </form>
    </div>
  </body>
</html>

在上述例子中,我們定義了四個(gè)樣式,頭兩個(gè)樣式用于選擇屬于ng-dirty類成員的元素,僅在用戶與之交互后應(yīng)用到相應(yīng)元素上。內(nèi)容有效的元素是ng-valid類的成員,會(huì)被渲染為淡綠色背景,內(nèi)容無效的元素是ng-invalid類的成員,會(huì)被渲染為淡粉色背景

2、使用特殊變量來提供反饋信息

<!DOCTYPE html>
<html ng-app='exampleApp'>
  <head>
    <meta charset="UTF-8">
    <title>表單</title>
    <script src="../../js/angular.min.js" type="text/javascript" charset="utf-8"></script>
    <link rel="stylesheet" type="text/css" href="../../css/bootstrap.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" />
    <link rel="stylesheet" type="text/css" href="../../css/bootstrap-theme.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" />
    <script type="text/javascript">
      angular.module('exampleApp',[])
      .controller('defaultCtrl',function($scope){
        $scope.addUser=function(userDetails){
          $scope.message=userDetails.name+"("+userDetails.email+")("+userDetails.agreed+")"
        }
        $scope.message='Ready';
      });
    </script>
    <style type="text/css">
      form .ng-invalid-required.ng-dirty{background-color: lightpink;}
      form .ng-invalid-email.ng-dirty{background-color: lightgoldenrodyellow;}
      form .ng-valid.ng-dirty{background-color: lightgreen;}
      span.summary.ng-invalid{color: red;font-weight: bold;}
      span.summary.ng-valid{color: green;}
      div.error{color:red;font-weight: bold;}
    </style>
  </head>
  <body>
    <div id="todoPanel" class="panel" ng-controller='defaultCtrl'>
      <form name='myForm' novalidate ng-submit='addUser(newUser)'>
        <div class="well">
          <div class="form-group">
            <label for="">Email:</label>
            <input type="email" name='userEmail' class="form-control" required ng-model='newUser.email'/>
            <div class="error" ng-show="myForm.userEmail.$invalid&&myForm.userEmail.$dirty">
              <span ng-show="myForm.userEmail.$error.email">
                please enter a valid email address
              </span>
              <span ng-show="myForm.userEmail.$error.required">
                please enter a value
              </span>
            </div>
          </div>
          <button type="submit" class="btn btn-primary btn-block" ng-disabled='myForm.$invalid'>OK</button>
        </div>
      </form>
    </div>
  </body>
</html>

在本例中新增了一個(gè)新的div元素用于給用戶顯示校驗(yàn)提示信息,新的div元素的可見性是受ng-show指令控制的,將會(huì)在input元素被輸入值,且輸入值未通過校驗(yàn)時(shí)顯示該元素。這里是聯(lián)合使用form元素的name值和input的name值來訪問input元素的。在這個(gè)例子中,我們使用特殊校驗(yàn)變量和其他指令聯(lián)合使用以增強(qiáng)用戶體驗(yàn)。但是這樣可能會(huì)使頁面增加大量的相同冗余信息的元素,接下來我們做簡化

<!DOCTYPE html>
<html ng-app='exampleApp'>
  <head>
    <meta charset="UTF-8">
    <title>表單</title>
    <script src="../../js/angular.min.js" type="text/javascript" charset="utf-8"></script>
    <link rel="stylesheet" type="text/css" href="../../css/bootstrap.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" />
    <link rel="stylesheet" type="text/css" href="../../css/bootstrap-theme.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" />
    <script type="text/javascript">
      angular.module('exampleApp',[])
      .controller('defaultCtrl',function($scope){
        $scope.addUser=function(userDetails){
          $scope.message=userDetails.name+"("+userDetails.email+")("+userDetails.agreed+")"
        }
        $scope.message='Ready';
        $scope.getError=function(error){
          if(angular.isDefined(error)){
            if(error.required){
              return 'please enter a value';
            }else if(error.email){
              return 'please enter a valid email address';
            }
          }
        }
      });
    </script>
    <style type="text/css">
      form .ng-invalid-required.ng-dirty{background-color: lightpink;}
      form .ng-invalid-email.ng-dirty{background-color: lightgoldenrodyellow;}
      form .ng-valid.ng-dirty{background-color: lightgreen;}
      span.summary.ng-invalid{color: red;font-weight: bold;}
      span.summary.ng-valid{color: green;}
      div.error{color:red;font-weight: bold;}
    </style>
  </head>
  <body>
    <div id="todoPanel" class="panel" ng-controller='defaultCtrl'>
      <form name='myForm' novalidate ng-submit='addUser(newUser)'>
        <div class="well">
          <div class="form-group">
            <label for="">Email:</label>
            <input type="email" name='userEmail' class="form-control" required ng-model='newUser.email'/>
            <div class="error" ng-show="myForm.userEmail.$invalid&&myForm.userEmail.$dirty">
              {{getError(myForm.userEmail.$error)}}
            </div>
          </div>
          <button type="submit" class="btn btn-primary btn-block" ng-disabled='myForm.$invalid'>OK</button>
        </div>
      </form>
    </div>
  </body>
</html>

更多關(guān)于AngularJS相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《AngularJS指令操作技巧總結(jié)》、《AngularJS入門與進(jìn)階教程》及《AngularJS MVC架構(gòu)總結(jié)

希望本文所述對(duì)大家AngularJS程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 在Angular測試中使用spy的教程詳解

    在Angular測試中使用spy的教程詳解

    spy?是一種檢查函數(shù)是否被調(diào)用或提供自定義返回值的方法,我們可以使用spy?來測試依賴于服務(wù)的組件,并避免實(shí)際調(diào)用服務(wù)的方法來獲取值,在本文中,您將學(xué)習(xí)如何在?Angular?項(xiàng)目中使用?Jasmine?spy,需要的朋友可以參考下
    2024-03-03
  • 詳解AngularJS如何實(shí)現(xiàn)跨域請(qǐng)求

    詳解AngularJS如何實(shí)現(xiàn)跨域請(qǐng)求

    跨域請(qǐng)求一直是網(wǎng)頁編程中的一個(gè)難題,在過去,絕大多數(shù)人都傾向于使用JSONP來解決這一問題。不過現(xiàn)在,我們可以考慮一下W3C中一項(xiàng)新的特性——CORS(Cross-Origin Resource Sharing)了。
    2016-08-08
  • angular 基于ng-messages的表單驗(yàn)證實(shí)例

    angular 基于ng-messages的表單驗(yàn)證實(shí)例

    本篇文章主要介紹了angular 基于ng-messages的表單驗(yàn)證實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • AngularJS實(shí)現(xiàn)的根據(jù)數(shù)量與單價(jià)計(jì)算總價(jià)功能示例

    AngularJS實(shí)現(xiàn)的根據(jù)數(shù)量與單價(jià)計(jì)算總價(jià)功能示例

    這篇文章主要介紹了AngularJS實(shí)現(xiàn)的根據(jù)數(shù)量與單價(jià)計(jì)算總價(jià)功能,涉及AngularJS事件響應(yīng)與數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • Angular封裝WangEditor富文本組件的方法

    Angular封裝WangEditor富文本組件的方法

    這篇文章主要介紹了Angular封裝WangEditor富文本組件,得益于Angular的強(qiáng)大,封裝WangEditor組件非常簡單,需要的朋友可以參考下
    2021-07-07
  • 詳解angular中使用echarts地圖

    詳解angular中使用echarts地圖

    這篇文章主要為大家介紹了angular中使用echarts地圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Angular8 實(shí)現(xiàn)table表格表頭固定效果

    Angular8 實(shí)現(xiàn)table表格表頭固定效果

    這篇文章主要介紹了Angular8 實(shí)現(xiàn)table表格表頭固定效果,表頭固定,內(nèi)部實(shí)現(xiàn)滾動(dòng)條效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Angular.js回顧ng-app和ng-model使用技巧

    Angular.js回顧ng-app和ng-model使用技巧

    這篇文章主要回顧Angular.js中ng-app和ng-model使用技巧,感興趣的小伙伴們可以參考一下
    2016-04-04
  • AngularJS包括詳解及示例代碼

    AngularJS包括詳解及示例代碼

    本文主要介紹AngularJS包括的基礎(chǔ)知識(shí),這里整理了相關(guān)資料并附示例代碼和實(shí)現(xiàn)效果圖,有需要的小伙伴可以參考下
    2016-08-08
  • Angularjs之filter過濾器(推薦)

    Angularjs之filter過濾器(推薦)

    這篇文章主要介紹了Angularjs之filter過濾器的相關(guān)資料,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11

最新評(píng)論

吉安市| 通州区| 杂多县| 连南| 芒康县| 崇文区| 浑源县| 尚义县| 房产| 青铜峡市| 逊克县| 马山县| 庄浪县| 云林县| 大城县| 循化| 鄂托克旗| 青州市| 岳阳县| 文登市| 桃江县| 宜都市| 河东区| 和政县| 成都市| 依兰县| 平乐县| 洛浦县| 松潘县| 府谷县| 永新县| 呼玛县| 双峰县| 瑞昌市| 磐石市| 花莲县| 余江县| 阳原县| 南城县| 通州区| 东乌|