Rumah > hujung hadapan web > tutorial js > AngularJS melaksanakan pengesahan borang manual dan pengesahan borang automatik_AngularJS

AngularJS melaksanakan pengesahan borang manual dan pengesahan borang automatik_AngularJS

WBOY
Lepaskan: 2016-05-16 15:26:36
asal
1255 orang telah melayarinya

Terdapat kira-kira dua jenis pengesahan borang dalam AngularJS, satu pengesahan manual dan satu lagi pengesahan automatik.
1. Pengesahan manual
Pengesahan manual yang dipanggil adalah untuk mengesahkan melalui atribut borang AngularJS. Untuk menjadi borang AngularJS, dua syarat mesti dipenuhi:

1. Tambahkan novalidate="novalidate" pada elemen borang;

2. Tambahkan nama="theForm" pada elemen borang,

seperti berikut:

● Menambah novalidate="novalidate" pada borang bermakna borang itu tidak lagi menggunakan ciri pengesahan HTML5
<!DOCTYPE html>
<html lang="en" ng-app="myApp1">
<head>
 <meta charset="UTF-8">
 <title></title>
 <link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.min.css"/>
 <link rel="stylesheet" href="../css/main.css"/>
</head>
<body>
<nav >
 <div class="container">
  <div class="navbar-header">
   <a href="/" class="navbar-brand">Form Submitting</a>
  </div>
 </div>
</nav>
 
<div class="container main-content" ng-controller="myCtrl1">
 <!--novalidate让表单不要使用html验证-->
 <!--theForm变成scope的一个字段-->
 <form ng-submit="onSubmit(theForm.$valid)" novalidate="novalidate" name="theForm">
  <div class="form-group">
   <label for="name">Name</label>
   <input type="text" class="form-control" id="name" ng-model="formModel.name"/>
  </div>
 
  <div class="form-group" ng-class="{
   'has-error': !theForm.email.$valid && (!theForm.$pristine || theForm.$submitted),
   'has-success': theForm.email.$valid && (!theForm.$pristine || theForm.$submitted)
   }">
   <label for="email">Email</label>
   <input type="email" class="form-control" id="email" ng-model="formModel.email" required="required" name="email"/>
   <p class="help-block" ng-show="theForm.email.$error.required && (!theForm.$pristine || theForm.$submitted)">必填</p>
   <p class="help-block" ng-show="theForm.email.$error.email && (!theForm.$pristine || theForm.$submitted)">email格式不正确</p>
  </div>
 
  <div class="form-group">
   <label for="username">Username</label>
   <input type="text" class="form-control" id="username" ng-model="formModel.username"/>
  </div>
 
  <div class="form-group">
   <label for="age">Age</label>
   <input type="number" class="form-control" id="age" ng-model="formModel.age"/>
  </div>
 
  <div class="form-group">
   <label for="sex">Sex</label>
   <select name="sex" id="sex" class="form-control" ng-model="formModel.sex">
    <option value="">Please choose</option>
    <option value="male">Mail</option>
    <option value="femail">Femail</option>
   </select>
  </div>
 
  <div class="form-group">
   <label for="password">Password</label>
   <input type="text" class="form-control" id="password" ng-model="formModel.password"/>
  </div>
 
  <div class="form-group">
   <button class="btn btn-primary" type="submit">Register</button>
  </div>
 
   <pre class="brush:php;toolbar:false">
    {{theForm | json}}
   
Salin selepas log masuk
● Menambah nama="theForm" pada borang bermakna nama borang ialah theForm. Cara menggunakan Borang, sebagai contoh, kami mengesahkan sama ada borang telah diubah suai Borang.$submitted
● Hantar borang melalui ng-submit

● formModel ialah atribut dalam $scope
● Mengesahkan e-mel borang secara manual, menggunakan banyak sifat borang AngularJS, seperti theForm.email.$valid, theForm.$pristine, theForm.$submitted, theForm.email.$error.required, theForm.email.$ ralat.e-mel
● Cetak semua atribut borang AngularJS melalui

{{theForm | json}}




Di atas, semua input dengan atribut nama dipaparkan di atas.
{
 "$error": {
  "required": [
   {
    "$validators": {},
    "$asyncValidators": {},
    "$parsers": [],
    "$formatters": [
     null
    ],
    "$viewChangeListeners": [],
    "$untouched": true,
    "$touched": false,
    "$pristine": true,
    "$dirty": false,
    "$valid": false,
    "$invalid": true,
    "$error": {
     "required": true
    },
    "$name": "email",
    "$options": null
   }
  ]
 },
 "$name": "theForm",
 "$dirty": false,
 "$pristine": true,
 "$valid": false,
 "$invalid": true,
 "$submitted": false,
 "email": {
  "$validators": {},
  "$asyncValidators": {},
  "$parsers": [],
  "$formatters": [
   null
  ],
  "$viewChangeListeners": [],
  "$untouched": true,
  "$touched": false,
  "$pristine": true,
  "$dirty": false,
  "$valid": false,
  "$invalid": true,
  "$error": {
   "required": true
  },
  "$name": "email",
  "$options": null
 },
 "sex": {
  "$validators": {},
  "$asyncValidators": {},
  "$parsers": [],
  "$formatters": [],
  "$viewChangeListeners": [],
  "$untouched": true,
  "$touched": false,
  "$pristine": true,
  "$dirty": false,
  "$valid": true,
  "$invalid": false,
  "$error": {},
  "$name": "sex",
  "$options": null
 }
}
Salin selepas log masuk
Modul, pengawal dan kaedah menyerahkan borang ditakrifkan dalam fail second.js.



Kelebihan kaedah pengesahan borang di atas ialah ia sangat boleh dikawal, tetapi ia agak menyusahkan.
var myApp1 = angular.module('myApp1',[]);
 
myApp1.controller('myCtrl1', function($scope, $http){
  $scope.formModel = {};
 
  $scope.onSubmit = function(){
    $http.post('someurl',$scope.formModel)
      .success(function(data){
        console.log(':)');
      })
      .error(function(data){
        console.log(':(');
      });
 
    console.log($scope.formModel);
  };
});
Salin selepas log masuk

2. Pengesahan automatik
Kaedah pengesahan bentuk lain AngularJS ialah pengesahan automatik, yang dilaksanakan melalui arahan Selain arahan yang disertakan dengan AngularJS, anda juga perlu menggunakan modul pihak ketiga angular-auto-validate.
Mengenai
angular-auto-validate:
● Pemasangan: npm i angular-auto-validate ● Petikan: ● pergantungan modul: var myApp = angular.module("app", ["jcs-autoValidate"]);
Untuk menyetempatkan mesej ralat, modul pihak ketiga

angular-localize
juga diperlukan: ● Pemasangan: npm install angular-localize --save ● pergantungan modul: var myApp = angular.module("app", ["localize"]); ● Petikan:



Selain itu, apabila anda mengklik butang hantar borang, anda perlu melumpuhkan butang dan memaparkan kesan menunggu Anda perlu menggunakan modul pihak ketiga angular-ladda:
<script src="../node_modules/angular-sanitize/angular-sanitize.min.js"></script>
<script src="../node_modules/angular-localize/angular-localize.min.js"></script>
Salin selepas log masuk
● Pemasangan: bower install angular-ladda --save

● pergantungan modul: var myApp = angular.module("app", ["angular-ladda"]);

● Petikan:




Halaman tersebut adalah seperti berikut:
<link rel="stylesheet" href="../bower_components/ladda/dist/ladda-themeless.min.css"/>

<script src="../bower_components/ladda/dist/spin.min.js"></script>
<script src="../bower_components/ladda/dist/ladda.min.js"></script>
<script src="../bower_components/angular-ladda/dist/angular-ladda.min.js"></script>

Salin selepas log masuk


Untuk perkara di atas, lihat butang hantar dahulu:
<!DOCTYPE html>
<html lang="en" ng-app="myApp1">
<head>
 <meta charset="gb2312">
 <title></title>
 <link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.min.css"/>
 <link rel="stylesheet" href="../bower_components/ladda/dist/ladda-themeless.min.css"/>
 <link rel="stylesheet" href="../css/main.css"/>
</head>
<body>
<nav >
 <div class="container">
  <div class="navbar-header">
   <a href="/" class="navbar-brand">Form Validating Auto</a>
  </div>
 </div>
</nav>
 
<div class="container main-content" ng-controller="myCtrl1">
 <!--novalidate让表单不要使用html验证-->
 <!--theForm变成scope的一个字段-->
 <form ng-submit="onSubmit()" novalidate="novalidate">
  <div class="form-group">
   <label for="name" class="control-label">Name</label>
   <input type="text" class="form-control" id="name" ng-model="formModel.name" required="required"/>
  </div>
 
  <div class="form-group">
   <label for="email" class="control-label">Email</label>
   <input type="email" class="form-control" id="email" ng-model="formModel.email" required="required"/>
 
  </div>
 
  <div class="form-group">
   <label for="username" class="control-label">Username</label>
   <input type="text"
       class="form-control"
       id="username"
       ng-model="formModel.username"
       required="required"
       ng-pattern="/^[A-Za-z0-9_]{1,32}$/"
       ng-minlength="7"
       ng-pattern-err-type="badUsername"
    />
  </div>
 
  <div class="form-group">
   <label for="age" class="control-label">Age</label>
   <input type="number"
       class="form-control"
       id="age"
       ng-model="formModel.age"
       required="required"
       min="18"
       max="65"
       ng-min-err-type="tooYoung"
       ng-max-err-type="tooOld"
    />
  </div>
 
  <div class="form-group">
   <label for="sex" class="control-label">Sex</label>
   <select name="sex" id="sex" class="form-control" ng-model="formModel.sex" required="required">
    <option value="">Please choose</option>
    <option value="male">Mail</option>
    <option value="femail">Femail</option>
   </select>
  </div>
 
  <div class="form-group">
   <label for="password" class="control-label">Password</label>
   <input type="text" class="form-control" id="password" ng-model="formModel.password" required="required" ng-minlength="6"/>
  </div>
 
  <div class="form-group">
   <!--<button class="btn btn-primary" ng-click="onSubmit()">Register</button>-->
   <button class="btn btn-primary"
       ladda = "submitting"
       data-style="expand-right"
       type="submit">
    <span ng-show="submitting">正在注册...</span>
    <span ng-show="!submitting">注册</span>
   </button>
  </div>
 
   <pre class="brush:php;toolbar:false">
    {{formModel | json}}
   
<script src="../node_modules/angular-sanitize/angular-sanitize.min.js"></script> <script src="../node_modules/angular-localize/angular-localize.min.js"></script>
Salin selepas log masuk


● Nilai atribut ladda ialah nilai bool benar bermakna kesan menunggu dinamik dipaparkan, false tidak memaparkan kesan menunggu dinamik Penyerahan di sini ialah atribut dalam skop
<div >
 <!--<button class="btn btn-primary" ng-click="onSubmit()">Register</button>-->
 <button class="btn btn-primary"
     ladda = "submitting"
     data-style="expand-right"
     type="submit">
  <span ng-show="submitting">正在注册...</span>
  <span ng-show="!submitting">注册</span>
 </button>
</div>
Salin selepas log masuk
● data-style="expand-right" bermaksud memaparkan kesan menunggu dinamik di sebelah kanan butang

Mari ambil medan Umur dalam bentuk sebagai contoh:


Antaranya, min, max ialah arahan AgularJS, dan ng-min-err-type ialah arahan angular-auto-validate. Konvensyen yang diikuti di sini ialah nama arahan -err-type pengesahan borang ng-AngularJS Apakah fungsi tooYoung dan tooOld, dan di manakah ia digunakan?
<div >
 <label for="age" class="control-label">Age</label>
 <input type="number"
     class="form-control"
     id="age"
     ng-model="formModel.age"
     required="required"
     min="18"
     max="65"
     ng-min-err-type="tooYoung"
     ng-max-err-type="tooOld"
  />
</div>
Salin selepas log masuk
Ia digunakan pada peringkat modul dan ditakrifkan dalam fail form_validation_auto.js.



Di atas, gunakan perkhidmatan defaultErrorMessageResolver bagi angular-auto-validate dalam kaedah run untuk menyesuaikan mesej ralat. tooYoung dan tooOld pada halaman sepadan dengan errorMessages['tooYoung'] dan errorMessages['badUsername'] di sini.
var myApp1 = angular.module('myApp1',['jcs-autoValidate','localize','angular-ladda']);
 
myApp1.run(function(defaultErrorMessageResolver){
  defaultErrorMessageResolver.getErrorMessages().then(function(errorMessages){
    errorMessages['tooYoung'] = '年龄必须小于{0}';
    errorMessages['tooOld'] = '年龄不能大于{0}';
    errorMessages['badUsername'] = '用户名只能包含数字、字母或下划线';
  });
});
 
myApp1.controller('myCtrl1', function($scope, $http){
  $scope.formModel = {};
  $scope.submitting = false;
 
  $scope.onSubmit = function(){
 
    $scope.submitting = true;
    console.log('已提交');
    console.log($scope.formModel);
 
    $http.post('url',$scope.formModel)
      .success(function(data){
        console.log(':)');
        $scope.submitting = false;
      })
      .error(function(data){
        console.log(':(');
        $scope.submitting = false;
      });
  };
});
Salin selepas log masuk
Keseluruhan kandungan artikel ini diperkenalkan di sini, saya harap ia akan membantu anda mempelajari AngularJS untuk melaksanakan pengesahan borang.

Label berkaitan:
sumber:php.cn
Artikel sebelumnya:Cara membuat dan menyerahkan borang secara dinamik menggunakan kemahiran JavaScript_javascript Artikel seterusnya:jquery melaksanakan karusel automatik berjadual kesan khas_jquery
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Isu terkini
Topik-topik yang berkaitan
Lagi>
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan