Valider le champ de saisie sur le flou avec Angular
J'ai fait un simple test de champs de saisie, Mais j'essaie de convertir la validation sur le flou, Mais je n'ai pas d'idée pour arriver à cela, puisque je ne suis pas si familier avec angularjs.
un m'aider à valider seulement un flou dans cet exemple, s'il vous plaît..
myJs:
angular.module('myApp', [])
.controller('FormController', function($scope) {
$scope.fields = [
{placeholder: 'Username', isRequired: true},
{placeholder: 'Password', isRequired: true},
{placeholder: 'Email (optional)', isRequired: false}
];
$scope.submitForm = function() {
alert("it works!");
};
});
html:
<div ng-app="myApp">
<form name="signup_form" ng-controller="FormController" ng-submit="submitForm()" novalidate>
<div ng-repeat="field in fields" ng-form="signup_form_input">
<input type="text"
name="dynamic_input"
ng-required="field.isRequired"
ng-model="field.name"
placeholder="{{field.placeholder}}" />
<div ng-show="signup_form_input.dynamic_input.$dirty && signup_form_input.dynamic_input.$invalid">
<span class="error" ng-show="signup_form_input.dynamic_input.$error.required">The field is required.</span>
</div>
</div>
<button type="submit" ng-disabled="signup_form.$invalid">Submit All</button>
</form>
</div>
source d'informationauteur 3gwebtrain
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement créer une directive qui a le même nom que
ngModel
. Ajouter unblur
événement sur l'élément qui change la$dirty
état de langModel
de vrai. Assurez-vous de changerngModel
's$dirty
état à false lorsque des modifications sont apportées sur l'élément par l'ajout d'un rappel à l'intérieur dengModel.$viewChangeListeners
tableau.FOURCHE DE L'ÉCHANTILLON
La directive ressemble à quelque chose comme ceci:
Note: Ne vous inquiétez pas si la coutume nom de la directive,
ngModel
est la même Angulaire par défaut dengModel
il suffit d'exécuter deux d'entre eux (ne pas l'écraser). Lescope.$on('$destroy')
à l'écoute, supprime leblur
gestionnaire d'événement lorsque la portée est détruite, par exemple lors de changements de route et que le contrôleur est détruit ou lorsqu'un champ est supprimé ce qui déclenche une reconstruction de la répétition des éléments du DOM à nouveau(en détruisant l'enfant du champ créé parng-repeat
).Si vous mettez à jour Angulaire 1.3 vous pouvez utiliser
ng-model-options
de mettre à jour le modèle sur le flou.violon
Toutefois, si vous ne pouvez pas mettre à jour, alors il ya beaucoup de façons de le faire ici.
juste donner l'id de la forme et ajouter le code javascript. C'est tout. Pour la version " démo "http://jsfiddle.net/SaurabhGhewari/2ko9bamk/"
Si vous avez une validation personnalisée, une façon simple est d'aller à l'aide de ngBlur. Ajoutez les lignes suivantes à votre domaine et d'écrire une fonction de validation de votre contrôleur:
Vous pouvez également utiliser ng-modèle-options combinées avec ng-changement
J'ai aussi trouvé l'anti-rebond option très agréable pour déclencher la validation. Vous pouvez de temps de sorte que lorsque l'utilisateur est fini la saisie, la validation déclenche: