J'ai été googling pendant un moment et n'arrive pas à trouver une bonne réponse pour mon cas spécifique. J'ai trouvé des façons de faire des validations en temps réel, mais je veux combiner cela avec des validations personnalisées après qu'un utilisateur clique sur "soumettre". Je veux permettre à l'utilisateur de cliquer sur le soumettre même s'il n'est pas valide, mais j'annulerai la soumission dans le code. Prenez le code suivant:AngularJS - effectuer une validation supplémentaire sur le formulaire soumettre
<form name="cashForm" id="cashForm" novalidate>
<input type="text" id="name" required /> //
<input type="number" placeholder="Tax: " required name="tax" id="tax" />
<input type="number" placeholder="Tip: " required name="tip" id="tip" />
<button ng-click="submission()" ng-disabled="paymentForm.$invalid">Submit</button>
</form>
//inside controller
this.submission = function() {
//check if tip + tax is over 20
//prevent form and show error message if not
//otherwise allow default behavior
}
Je veux que le formulaire pour soumettre effectivement si la taxe/conseil est sur 10. Comment puis-je vérifier cela et comment empêcher la soumission du formulaire si elle ne répond pas les exigences? Aussi, est-ce que je mettrais cette logique dans le contrôleur?
Merci Matthew. Je pense que cela devrait m'amener à un bon point. Une dernière question, le contrôleur est-il le bon endroit pour mettre cette logique? J'ai entendu dire que vous ne devriez pas mettre trop de logique dans le contrôleur, mais il semble que ce soit le seul endroit qui a du sens. –
Personnellement, je pense que c'est bien dans le contrôleur parce que les conditions déterminent directement ce que le modèle de vue ('$ scope') est rempli avec le (s) message (s) d'erreur. Il est vrai que vous devriez essayer de garder le contrôleur aussi mince que possible, et je ne suis pas à l'aise si je dois faire beaucoup de défilement dans un contrôleur, cela signifie probablement qu'il fait trop de choses. Si cela devient incontrôlable, considérez abstraite toute la logique "vérifier si soumettre" dans une directive personnalisée et créez votre propre comportement de clic personnalisé (soumettre) pour remplacer celui de "ng-click" sur le bouton. –
Ensuite, si vous voulez obtenir _really_ intelligent, essayez de rendre la directive personnalisée réutilisable en transmettant un objet de configuration qui contient les paramètres qui déterminent si un envoi est autorisé à continuer. Ensuite, vous pouvez le réutiliser et reproduire le comportement avec une facilité relative. Un investissement de temps. –