أحدث البرامج التعليمية وتطوير الشبكة
 

AngularJS التحقق من صحة النموذج


يمكن AngularJS التحقق من صحة البيانات المدخلة.


التحقق من صحة النموذج

تقدم AngularJS العميل استمارة التحقق من الصحة.

AngularJS تراقب الدولة من حيث الشكل وإدخال الحقول (المدخلات، جزء النص، حدد)، ويتيح لك إعلام المستخدم عن الحالة الراهنة.

كما يحمل AngularJS معلومات حول ما إذا كان قد تم لمسها، أو تعديل، أو لا.

يمكنك استخدام سمات معيار HTML5 للتحقق من صحة المدخلات، أو التي يمكن أن تجعل وظائف التحقق من صحة الخاصة بك.

ملاحظة التحقق من جانب العميل لا يمكن وحده إدخال المستخدم آمن. التحقق من صحة خادم جانب ضروري أيضا.

مطلوب

استخدام السمة HTML5 required لتحديد أن حقل الإدخال يجب ملء:

مثال

مطلوب حقل الإدخال:

<form name="myForm">
<input name="myInput" ng-model="myInput" required>
</form>

<p>The input's valid state is:</p>
<h1>{{myForm.myInput.$valid}}</h1>
انها محاولة لنفسك »

البريد الإلكتروني

استخدام نوع HTML5 email لتحديد أن يجب أن تكون قيمة على البريد الإلكتروني:

مثال

حقل الإدخال يجب أن يكون عن طريق البريد الإلكتروني:

<form name="myForm">
<input name="myInput" ng-model="myInput" type="email">
</form>

<p>The input's valid state is:</p>
<h1>{{myForm.myInput.$valid}}</h1>
انها محاولة لنفسك »

الدولة النموذج والدولة الإدخال

AngularJS باستمرار تحديث الدولة من شكل وحقول الإدخال.

حقول الإدخال لديها الدول التالية:

  • $untouched لم تطرق المجال، إلا
  • $touched قد تم التطرق الحقل
  • $pristine لم يتم تعديل الحقل بعد
  • $dirty تم تعديل الحقل
  • $invalid محتوى الحقل غير صالح
  • $valid محتوى الحقل صالح

انهم جميعا خصائص حقل الإدخال، وإما true أو false .

أشكال لها الدول التالية:

  • $pristine قد تم تعديلها لا مجال بعد
  • $dirty واحد أو أكثر تم تعديلها
  • $invalid محتوى شكل غير صالح
  • $valid محتوى النموذج هو صحيح
  • $submitted يقدم هذا النموذج

انهم جميعا خصائص النموذج، وإما true أو false .

يمكنك استخدام هذه الدول لإظهار الرسائل ذات مغزى للمستخدم. سبيل المثال، إذا كان مطلوبا أو المجال، والمستخدم يترك فارغا، يجب أن تعطي للمستخدم تحذير:

مثال

تظهر رسالة خطأ إذا تم لمسها الميدان وفارغ:

<input name="myName" ng-model="myName" required>
<span ng-show="myForm.myName.$touched && myForm.myName.$invalid">The name is required.</span>
انها محاولة لنفسك »

فئات CSS

ويضيف AngularJS الطبقات المغلق لأشكال وحقول الإدخال اعتمادا على دولهم.

وأضاف الفئات التالية، أو إزالتها من، حقول الإدخال:

  • ng-untouched لم يمس الحقل بعد
  • ng-touched قد تم التطرق الحقل
  • ng-pristine لم يتم تعديل الحقل بعد
  • ng-dirty تم تعديل الحقل
  • ng-valid محتوى الحقل صالح
  • ng-invalid محتوى الحقل غير صالحة
  • ng-valid- key مفتاح واحد لكل التحقق من الصحة. على سبيل المثال: ng-valid-required ، مفيدا عندما يكون هناك أكثر من شيء واحد يجب أن يتم التحقق من صحة
  • ng-invalid- key مثال: ng-invalid-required

وأضاف الفئات التالية، أو إزالتها من أشكال:

  • ng-pristine لم يتم تعديل أية حقول بعد
  • ng-dirty تم تعديل واحد أو أكثر من حقول
  • ng-valid محتوى النموذج هو صحيح
  • ng-invalid محتوى النموذج غير صالحة
  • ng-valid- key مفتاح واحد لكل التحقق من الصحة. على سبيل المثال: ng-valid-required ، مفيدا عندما يكون هناك أكثر من شيء واحد يجب أن يتم التحقق من صحة
  • ng-invalid- key مثال: ng-invalid-required

تتم إزالة الطبقات إذا كانت القيمة التي تمثلها هي false .

إضافة أنماط لهذه الفئات لتقديم طلبك واجهة أفضل وأكثر سهولة للمستخدم.

مثال

تطبيق الأساليب، باستخدام معيار CSS:

<style>
input.ng-invalid {
    background-color: pink;
}
input.ng-valid {
    background-color: lightgreen;
}
</style>
انها محاولة لنفسك »

ويمكن أيضا أن تكون على غرار النماذج:

مثال

تطبيق الأساليب لأشكال معدلة (البكر)، وأشكال معدلة:

<style>
form.ng-pristine {
    background-color: lightblue;
}
form.ng-dirty {
    background-color: pink;
}
</style>
انها محاولة لنفسك »

التحقق من صحة مخصصة

لإنشاء وظيفة التحقق من صحة الخاصة بك قليلا أكثر صعوبة. لديك لإضافة توجيهات جديدة إلى التطبيق الخاص بك، والتعامل مع التحقق من صحة داخل دالة مع بعض الوسائط المحددة.

مثال

إنشاء التوجيه الخاص بك، الذي يحتوي على وظيفة التحقق من صحة مخصصة، والرجوع إليه باستخدام my-directive .

يبقى الميدان صحيحا إلا إذا كانت قيمة تحتوي على الحرف "ه":

<form name="myForm">
<input name="myInput" ng-model="myInput" required my-directive>
</form>

<script>
var app = angular.module('myApp', []);
app.directive('myDirective', function() {
  return {
    require: 'ngModel',
    link: function(scope, element, attr, mCtrl) {
      function myValidation(value) {
        if (value.indexOf("e") > -1) {
          mCtrl.$setValidity('charE', true);
        } else {
          mCtrl.$setValidity('charE', false);
        }
        return value;
      }
      mCtrl.$parsers.push(myValidation);
    }
  };
});
</script>
انها محاولة لنفسك »

مثال أوضح:

في HTML، سيتم التوجيه الجديد المشار إليها باستخدام السمة my-directive .

في جافا سكريبت نبدأ بإضافة توجيه جديد اسمه myDirective .

تذكر، عند تسمية التوجيه، يجب عليك استخدام اسم قضية الجمل، myDirective ، ولكن عندما تتذرع بها، يجب عليك استخدام - اسم فصل، my-directive .

ثم، والعودة كائن حيث يمكنك تحديد أن نطلب ngModel ، وهو ngModelController.

جعل وظيفة الربط الذي يحتاج إلى بعض الحجج، حيث الوسيطة الرابعة، mCtrl ، هو ngModelController ،

ثم حدد وظيفة، في هذه الحالة يدعى myValidation ، والتي تأخذ وسيطة واحدة، هذه الحجة هي قيمة عنصر الإدخال.

اختبار إذا كانت قيمة تحتوي على الحرف "e"، ومجموعة من صلاحية تحكم نموذج إما true أو false .

في الماضي، mCtrl.$parsers.push(myValidation); وإضافة myValidation وظيفة لمجموعة من الوظائف الأخرى، والتي سوف يتم تنفيذها في كل مرة تتغير قيمة المدخلات.


التحقق من صحة مثال

<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>

<h2>Validation Example</h2>

<form  ng-app="myApp"  ng-controller="validateCtrl"
name="myForm" novalidate>

<p>Username:<br>
  <input type="text" name="user" ng-model="user" required>
  <span style="color:red" ng-show="myForm.user.$dirty && myForm.user.$invalid">
  <span ng-show="myForm.user.$error.required">Username is required.</span>
  </span>
</p>

<p>Email:<br>
  <input type="email" name="email" ng-model="email" required>
  <span style="color:red" ng-show="myForm.email.$dirty && myForm.email.$invalid">
  <span ng-show="myForm.email.$error.required">Email is required.</span>
  <span ng-show="myForm.email.$error.email">Invalid email address.</span>
  </span>
</p>

<p>
  <input type="submit"
  ng-disabled="myForm.user.$dirty && myForm.user.$invalid ||
  myForm.email.$dirty && myForm.email.$invalid">
</p>

</form>

<script>
var app = angular.module('myApp', []);
app.controller('validateCtrl', function($scope) {
    $scope.user = 'John Doe';
    $scope.email = '[email protected]';
});
</script>

</body>
</html>
انها محاولة لنفسك »
ملاحظة يتم استخدام HTML novalidate السمة شكل لتعطيل التحقق من صحة المتصفح الافتراضي.

وأوضح مثال

وAngularJS التوجيه نانوغرام نموذج يربط العناصر والمدخلات للنموذج.

الكائن نموذج لديه خاصيتين: المستخدم والبريد الإلكتروني.

بسبب نغ المعرض، يمتد مع اللون: الأحمر يتم عرض فقط عندما المستخدم أو البريد الإلكتروني هو $ القذرة و$ صالح.