AngularJS Form Doğrulaması
AngularJS, giriş verilerini doğrulayabilir.
Form Doğrulama
AngularJS, istemci tarafı form doğrulaması sunar.
AngularJS, formun ve giriş alanlarının (input, textarea, select) durumunu izler ve kullanıcıyı mevcut durum hakkında bilgilendirmenizi sağlar.
AngularJS ayrıca bunlara dokunulup dokunulmadığı veya değiştirilip değiştirilmediği hakkında da bilgi tutar.
Girişi doğrulamak için standart HTML5 niteliklerini kullanabilir veya kendi doğrulama işlevlerinizi oluşturabilirsiniz.
İstemci tarafı doğrulama, kullanıcı girişini tek başına güvence altına alamaz. Sunucu tarafı doğrulaması da gereklidir.
Gerekli
required
Giriş alanının doldurulması gerektiğini belirtmek için HTML5 niteliğini kullanın :
Örnek
Giriş alanı gereklidir:
<form name="myForm">
<input name="myInput" ng-model="myInput"
required>
</form>
<p>The input's valid state is:</p>
<h1>{{myForm.myInput.$valid}}</h1>
e-posta
email
Değerin bir e-posta olması gerektiğini belirtmek için HTML5 türünü kullanın :
Örnek
Giriş alanı bir e-posta olmalıdır:
<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>
Form Durumu ve Giriş Durumu
AngularJS, hem form hem de giriş alanlarının durumunu sürekli olarak güncelliyor.
Giriş alanları aşağıdaki durumlara sahiptir:
$untouched
Henüz alana dokunulmadı$touched
Alana dokunuldu$pristine
Alan henüz değiştirilmedi$dirty
Alan değiştirildi$invalid
Alan içeriği geçerli değil$valid
Alan içeriği geçerli
Bunların tümü giriş alanının özellikleridir ve ya true
veya false
.
Formlar aşağıdaki durumlara sahiptir:
$pristine
Henüz hiçbir alan değiştirilmedi$dirty
Bir veya daha fazlası değiştirildi$invalid
Form içeriği geçerli değil$valid
Form içeriği geçerli$submitted
Form gönderildi
Bunların tümü formun özellikleridir ve ya true
veya false
.
Kullanıcıya anlamlı mesajlar göstermek için bu durumları kullanabilirsiniz. Örneğin, bir alan gerekliyse ve kullanıcı onu boş bırakırsa, kullanıcıya bir uyarı vermelisiniz:
Örnek
Alana dokunulduysa VE boşsa bir hata mesajı göster:
<input name="myName" ng-model="myName" required>
<span ng-show="myForm.myName.$touched
&& myForm.myName.$invalid">The name is required.</span>
CSS Sınıfları
AngularJS, durumlarına bağlı olarak formlara ve giriş alanlarına CSS sınıfları ekler.
Aşağıdaki sınıflar giriş alanlarına eklenir veya bunlardan kaldırılır:
ng-untouched
Henüz alana dokunulmadıng-touched
Alana dokunuldung-pristine
Alan henüz değiştirilmeding-dirty
Alan değiştirilding-valid
Alan içeriği geçerling-invalid
Alan içeriği geçerli değilng-valid-key
Her doğrulama için bir anahtar . Örnek:ng-valid-required
, doğrulanması gereken birden fazla şey olduğunda kullanışlıdırng-invalid-key
Örnek:ng-invalid-required
Aşağıdaki sınıflar formlara eklenir veya formlardan çıkarılır:
ng-pristine
Henüz hiçbir alan değiştirilmeding-dirty
Bir veya daha fazla alan değiştirilding-valid
Form içeriği geçerling-invalid
Form içeriği geçerli değilng-valid-key
Her doğrulama için bir anahtar . Örnek:ng-valid-required
, doğrulanması gereken birden fazla şey olduğunda kullanışlıdırng-invalid-key
Örnek:ng-invalid-required
Temsil ettikleri değer ise sınıflar kaldırılır false
.
Uygulamanıza daha iyi ve daha sezgisel bir kullanıcı arabirimi sağlamak için bu sınıflara stiller ekleyin.
Örnek
Standart CSS kullanarak stilleri uygulayın:
<style>
input.ng-invalid {
background-color: pink;
}
input.ng-valid {
background-color: lightgreen;
}
</style>
Formlar ayrıca stillendirilebilir:
Örnek
Değiştirilmemiş (bozulmamış) formlar ve değiştirilmiş formlar için stiller uygulayın:
<style>
form.ng-pristine {
background-color: lightblue;
}
form.ng-dirty {
background-color: pink;
}
</style>
Özel Doğrulama
Kendi doğrulama işlevinizi oluşturmak biraz daha zor; Uygulamanıza yeni bir yönerge eklemeniz ve belirli belirli argümanlarla bir işlevin içindeki doğrulama ile ilgilenmeniz gerekir.
Örnek
Özel bir doğrulama işlevi içeren kendi yönergenizi oluşturun ve my-directive
.
Alan yalnızca değer "e" karakterini içeriyorsa geçerli olacaktır:
<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>
Örnek Açıklama:
HTML'de, yeni yönergeye öznitelik kullanılarak başvurulacaktır
my-directive
.
JavaScript'te adlı yeni bir yönerge ekleyerek başlıyoruz myDirective
.
Bir yönergeyi adlandırırken bir deve vakası adı kullanmanız gerektiğini
myDirective
, ancak onu çağırırken -
ayrı bir ad kullanmanız gerektiğini unutmayın,
my-directive
.
Ardından, ihtiyacımız olduğunu belirttiğiniz ngModel
ngModelController olan bir nesneyi döndürün.
Dördüncü argümanın , olduğu bazı argümanları alan bir bağlantı işlevi yapın mCtrl
.ngModelController
Ardından, bir argüman alan, bu durumda adında bir fonksiyon belirtin myValidation
, bu argüman giriş öğesinin değeridir.
Değerin "e" harfini içerip içermediğini test edin ve model denetleyicisinin geçerliliğini ya true
veya olarak ayarlayın false
.
Sonunda, işlevi, giriş değeri her değiştiğinde yürütülecek olan bir dizi başka işleve ekleyecektir mCtrl.$parsers.push(myValidation);
.
myValidation
Doğrulama Örneği
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/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 form özniteliği novalidate , varsayılan tarayıcı doğrulamasını devre dışı bırakmak için kullanılır.
Örnek Açıklama
AngularJS yönergesi ng-model , girdi öğelerini modele bağlar.
Model nesnesinin iki özelliği vardır: user ve email .
ng-show nedeniyle, color:red içeren aralıklar yalnızca kullanıcı veya e-posta $dirty ve $invalid olduğunda görüntülenir .