Angularjs giriş verilerini doğrulamak.
Form Doğrulama
Angularjs istemci tarafı form doğrulama sunmaktadır.
Angularjs formu ve giriş alanları (giriş, textarea, seçme) durumunu izler ve siz mevcut durumu hakkında kullanıcıyı bilgilendirmek sağlar.
Angularjs ayrıca dokundu veya değiştirilmiş ya da değil olup olmadığını hakkında bilgi sahibidir.
Standart HTML5 girişini doğrulamak için niteliklerini kullanabilir veya kendi doğrulama işlevlerini yapabilirsiniz.
Istemci tarafında doğrulama tek başına değil, güvenli bir kullanıcı girişi. Sunucu tarafı doğrulama da gereklidir.
gereklidir
Kullanım HTML5 özelliği required
giriş alanı doldurulması gerektiğini belirtmek için:
Ö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>
Kendin dene " HTML5 tipi kullanın email
değeri email olması gerektiğini belirtmek için:
Örnek
giriş alanı, bir e-posta olmak zorundadı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>
Kendin dene " Form Devlet ve giriş durumu
Angularjs sürekli form ve giriş alanları hem durumunu güncelliyor.
Giriş alanları aşağıdaki durumlarda:
-
$untouched
alanında henüz dokunulmaz değil -
$touched
alan dokundu -
$pristine
alan henüz değiştirilmedi -
$dirty
alan modifiye edilmiş -
$invalid
alan içerik geçerli değil -
$valid
alan içerik geçerlidir
Bunlar giriş alanında tüm özelliklerinin, ve ya vardır true
ya false
.
Formlar aşağıdaki durumlarda:
-
$pristine
Hayır alanları henüz değiştirilmiştir -
$dirty
Bir veya daha fazla modifiye edilmiş -
$invalid
biçimli içerik geçerli değil -
$valid
biçimli içerik geçerlidir -
$submitted
form gönderildiğinde
Onlar formun tüm özellikleri vardır ve ya vardır true
ya false
.
Sen kullanıcıya anlamlı mesajlar göstermek için bu durumlarını kullanabilirsiniz. Bir alan gereklidir ve kullanıcı boş bırakırsa Örnek, sen kullanıcıya bir uyarı vermelidir:
Örnek
Alan dokundu VE boş olup olmadığını 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>
Kendin dene " CSS Sınıfları
Angularjs onların devletleri bağlı formları ve giriş alanlarında CSS sınıfları ekler.
Aşağıdaki sınıflar ilave ya da giriş alanları kaldırılır:
-
ng-untouched
alan henüz dokunulmaz değil -
ng-touched
alanı değinilmiştir -
ng-pristine
alan henüz modifiye edilmemiştir -
ng-dirty
alan modifiye edilmiş -
ng-valid
alan içerik geçerlidir -
ng-invalid
alan içerik geçerli değildir -
ng-valid- key
her doğrulama için bir anahtar. Örnek:ng-valid-required
, yararlı birden fazla şey varken valide edilmesi gerektiğini -
ng-invalid- key
Örnek:ng-invalid-required
Aşağıdaki sınıflar formlarından ilave ya da kaldırılır:
-
ng-pristine
Hayır alanları henüz değiştirilmedi -
ng-dirty
Bir veya daha fazla alanlar değiştirildi -
ng-valid
bir şekilde içerik geçerlidir -
ng-invalid
biçimli içerik geçerli değildir -
ng-valid- key
her doğrulama için bir anahtar. Örnek:ng-valid-required
, yararlı birden fazla şey varken valide edilmesi gerektiğini -
ng-invalid- key
Örnek:ng-invalid-required
Temsil ettiği bir değer ise sınıfları kaldırılır false
.
uygulamanıza daha iyi ve daha sezgisel bir kullanıcı arayüzü vermek için bu sınıflar için stilleri ekleyin.
Örnek
Standart CSS kullanarak, stilleri uygulayın:
<style>
input.ng-invalid {
background-color: pink;
}
input.ng-valid {
background-color: lightgreen;
}
</style>
Kendin dene " Formlar ayrıca tarz olabilir:
Örnek
Değiştirilmemiş için stilleri uygulayın (pristine) formları ve modifiye formlar için:
<style>
form.ng-pristine {
background-color: lightblue;
}
form.ng-dirty {
background-color: pink;
}
</style>
Kendin dene " Özel Doğrulama
Kendi doğrulama işlevi oluşturmak için biraz daha karmaşıktır. Eğer uygulamanın yeni bir yönerge ekleyin ve belirli belirtilen bağımsız değişken içeren bir işlev içinde doğrulama ile uğraşmak zorunda.
Örnek
Özel bir doğrulama işlevi içeren, kendi yönergesini oluşturun ve kullanarak başvurmak my-directive
.
Değeri karakteri içeriyorsa alanı sadece geçerli olacaktır "e" :
<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>
Kendin dene " Örnek Açıklaması:
HTML'de, yeni direktif özelliğini kullanarak anılacaktır my-directive
.
JavaScript biz adlı yeni yönergesini ekleyerek başlayın myDirective
.
Bir yönergeyi adlandırırken, bir deve vaka adını kullanması gerektiğini hatırlayın myDirective
ama bunu çağrılırken, kullanmak gerekir -
ayrılmış ad, my-directive
.
Eğer biz gerektiren belirtmek nereye Sonra, bir nesneyi döndürmek ngModel
ngModelController olduğunu.
Dördüncü argüman, bazı argümanları alır bir bağlantı işlevi olun mCtrl
olduğu ngModelController
,
Sonra adında bu durumda, bir işlev belirtmek myValidation
bir argüman alır, bu argüman giriş öğesinin değeridir.
Deney değeri harfini içeriyorsa "e" ve birine modeli kontrolörün geçerliliğini ayarlamak true
veya false
.
Sonunda, mCtrl.$parsers. push(myValidation) ;
mCtrl.$parsers. push(myValidation) ;
katacak myValidation
her seferinde giriş değeri değişiklikleri çalıştırılacaktır diğer fonksiyonların bir dizi, işlevi.
Doğrulama Örnek
<!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>
Kendin dene " HTML form nitelik novalidate varsayılan tarayıcı doğrulama devre dışı bırakmak için kullanılır.
Örnek Açıklaması
Angularjs yönergesi ng model model giriş elemanları bağlanır.
Kullanıcı ve e-posta: Model nesnesi iki özelliğe sahiptir.
Çünkü ng-show, renk ile açıklıklı: kullanıcı veya e-posta kirli ve $ geçersiz $ olduğunda kırmızı yalnızca görüntülenir.