J'ai le code suivant dans une application AngularJS, à l'intérieur d'un contrôleur, qui est appelé à partir d'une fonction ng-submit, qui appartient à un formulaire avec un nom profileForm
:
$scope.updateProfile = function() {
if($scope.profileForm.$invalid) {
//error handling..
}
//etc.
};
À l'intérieur de cette fonction, y a-t-il un moyen de déterminer quels champs causent l'invalidité du formulaire entier?
validation
angularjs
GSto
la source
la source
name
attribut de l'entrée pour le voir dans $ name (bien sûr). Le fait qu'AngularJS se lie à une propriété de modèle sans avoir besoin d'un nom peut rendre difficile le diagnostic de l'entrée non valide.Pour vérifier quel champ du formulaire est invalide
cela affichera le tableau des champs invalides du formulaire
la source
Si vous voulez voir quels champs gâchent votre validation et que vous avez jQuery pour vous aider, recherchez simplement la classe "ng-invalid" sur la console javascript.
Il listera tous les éléments DOM dont la validation a échoué pour une raison quelconque.
la source
Vous pouvez passer en boucle
form.$error.pattern
.la source
Lorsqu'un champ n'est pas valide, si vous essayez d'obtenir sa valeur, il le sera
undefined
.Disons que vous avez une entrée de texte attachée à
$scope.mynum
qui n'est valide que lorsque vous tapez des nombres et que vous avez tapéABC
dessus.Si vous essayez d'obtenir la valeur de
$scope.mynum
, ce seraitundefined
; il ne retournerait pas le fichierABC
.(Vous savez probablement tout cela, mais de toute façon)
Donc, j'utiliserais un tableau contenant tous les éléments nécessitant une validation que j'ai ajoutés à la portée et utiliserais un filtre (avec underscore.js par exemple) pour vérifier lesquels retournent comme
typeof
undefined
.Et ce seraient les champs provoquant l'état invalide.
la source
Je voulais afficher toutes les erreurs dans l'info-bulle du bouton Enregistrer désactivé, afin que l'utilisateur sache pourquoi est désactivé au lieu de faire défiler le long formulaire.
Remarque: n'oubliez pas d'ajouter la propriété de nom aux champs de votre formulaire
la source
Pour mon application, j'affiche une erreur comme celle-ci:
si vous voulez tout voir, utilisez simplement 'err' qui affichera quelque chose comme ceci:
Pas si bien formaté, mais vous verrez ces choses là-bas ...
la source
Si vous souhaitez trouver des champs qui invalident le formulaire sur l'interface utilisateur sans programmation, cliquez simplement avec le bouton droit sur inspecter (ouvrez les outils de développement dans la vue des éléments), puis recherchez ng-invalid avec ctrl + f dans cet onglet. Ensuite, pour chaque champ pour lequel vous trouvez une classe ng-invalide, vous pouvez vérifier si le champ ne reçoit aucune valeur alors qu'il est requis, ou d'autres règles qu'il peut enfreindre (format d'e-mail invalide, définition hors limites / max / min, etc.) . C'est le moyen le plus simple.
la source