Presque tous les sites Web utilisent des formulaires pour effectuer différentes tâches, telles que l'enregistrement des utilisateurs ou l'obtention de leurs coordonnées. Il est important de s'assurer que l'utilisateur qui remplit le formulaire saisit au moins des informations valides dans les champs de saisie.
Un message d'erreur détaillé doit également être affiché à l'utilisateur afin qu'il puisse remplir correctement le formulaire. Ce processus peut devenir très compliqué lorsque vous devez gérer un grand nombre d'éléments de formulaire, chacun nécessitant son propre message d'erreur personnalisé. Pour soulager la douleur, Angular 1.3 ajoute un nouveau module appelé ngMessages pour aider les développeurs à valider facilement les formulaires.
Le modulengMessages vous permet d'afficher des messages d'erreur personnalisés aux utilisateurs sans écrire de code en double. Dans ce tutoriel, vous apprendrez à utiliser ce module pour valider vos formulaires. Vous apprendrez également à charger des messages d'erreur en externe et à afficher les messages uniquement lorsque cela est réellement nécessaire.
Validons d'abord un seul champ de saisie avec ou sans l'aide de ngMessages pour comprendre l'utilité de ce module. Sans utiliser ngMessages, le balisage de l'élément input ressemblerait au code suivant :
Vous aurez également besoin du code JavaScript suivant :
angular.module('app', []);
Tous les autres éléments du formulaire nécessitent une validation similaire. Cela rendra le balisage très répétitif, augmentant ainsi le risque d'erreurs. Si vous décidez d'utiliser ngMessages pour valider la même saisie de formulaire, le balisage ressemblera au code suivant :
Le code JavaScript deviendra désormais :
angular.module('app', ['ngMessages']);
Ici, on utiliseng-messages
指令将错误消息分组在一起。传递给ng-messages
指令的值遵循以下模式formName.inputName.$error
。在我们的例子中,其计算结果为formValidation.username.$error
.
De même, vous pouvez également obtenir les clés dont les valeurs correspondent à la directiveng-messages
指令的值。 ngMessages 依赖 ngModel 指令公开的$error
对象来确定是否应在网页上显示或隐藏错误消息。它循环遍历$error
对象,查找与任何ng-message
pour tous les autres champs.
Voici un exemple fonctionnel montrant le code de validation ci-dessus en action :
Dans cette section, nous validerons un formulaire contenant les champs nom d'utilisateur, mot de passe et email. Le balisage du formulaire ressemblera au code suivant :
Comme vous pouvez le constater, le balisage requis pour valider les différents éléments du formulaire est très similaire. Un changement important dans cet exemple est l'ajout deng-pattern
指令。我们在这里使用的模式确保输入的用户名仅包含字母数字字符和下划线。w
位于/^w+$/
pour représenter les caractères des mots tels que A-Z, a-z, 0-9 et _.
Vous devriez essayer de saisir un nom d'utilisateur différent dans le champ du nom d'utilisateur. Au bout d'un moment, vous remarquerez que si vous tapez un caractère avant les 6 premiers caractères ou après les 12 premiers caractères, le formulaire ne se plaint pas que le caractère n'est pas alphanumérique. Ce comportement n'est pas très convivial.
Par exemple, disons que certains de vos utilisateurs ont des noms d'utilisateur commençant par un point d'exclamation. Ils doivent attendre d'avoir saisi six caractères supplémentaires avant d'obtenir une erreur concernant l'utilisation uniquement de caractères alphanumériques. Ce serait très frustrant s’ils recommençaient à saisir leur nom d’utilisateur à partir de zéro.
Par défaut, ngMessages n'affiche qu'une seule erreur à l'utilisateur à la fois. C'est pourquoi le message concernant les caractères invalides ne peut être affiché que lorsque l'utilisateur saisit plus de six caractères. De plus, ngMessages utilise l'ordre dans lequel vous saisissez les messages d'erreur comme indice pour les hiérarchiser.
Si vous fournissez un message de caractères minimum avant qu'une erreur alphanumérique ne se produise, ngMessages attendra que l'erreur de caractères minimum soit résolue avant d'afficher l'erreur alphanumérique.
Il s'agit du même formulaire mais les messages d'erreur sont affichés dans un ordre différent.
Vous pouvez également utiliserng-messages-multiple
pour afficher simultanément tous les messages d'erreur applicables à l'utilisateur. Cependant, une fois que les utilisateurs commencent à taper dans le champ de saisie, ils voient plusieurs messages d'erreur, ce qui peut être accablant.
我们的标记中仍然有很多重复。如果您想为不同的输入字段显示相同的错误消息,则为每个输入字段重复它是没有意义的。 ngMessages 模块可以帮助您仅编写一次通用错误消息,并在需要时将它们包含在您的表单中。以下是创建向用户显示通用错误消息的表单的标记。
就像前面的情况一样,消息的优先级由其在模板中的位置决定。您还可以通过在各个字段中包含自定义错误消息来覆盖模板中提供的通用消息。还可以使用以下代码从单独的文件加载错误消息:
您可以通过仅在用户在填写表单时实际出错时显示错误消息,使表单更加用户友好。例如,您可以选择仅在用户实际跳过输入元素时显示必填字段错误。
这可以通过使用ng-show
或ng-if
指令以及$touched
和$dirty
。对于$touched
,一旦输入失去焦点,就会显示错误消息。对于$dirty
,一旦输入无效就会显示错误消息。
Copier après la connexion这是显示
$touched
和$dirty
之间区别的演示。结论
在本教程中,您了解了使用 ngMessages 验证不同类型表单元素的输入是多么容易。您还学习了如何多次重复使用相同的错误消息以避免重复,以及如何确定不同错误消息的优先级。
您还可以同时使用 ngMessages 和 ngAnimate 来使用自定义动画来显示或隐藏错误消息。有关使用 ngAnimate 模块的教程也将很快在 Envato Tuts+ 上发布。
如果您想与其他读者分享任何提示,或者有任何问题想问,请在评论中告诉我。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Étiquettes associées:source:php.cnArticle précédent:React : garantir des données persistantes et des sessions transparentes Article suivant:Assemblage Web utilisant JavaScript (Wasm)Déclaration de ce site WebLe contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cnDerniers articles par auteur
2024-09-14 12:26:17 2024-09-14 12:17:17 2024-09-14 12:08:17 Que faire si la petite fenêtre Win11 plante ? Comment résoudre le crash de la petite fenêtre Win11 ?2024-09-14 10:35:07 Que faire si la petite fenêtre Win11 plante ? Comment résoudre le crash de la petite fenêtre Win11 ?2024-09-14 10:35:02 2024-09-14 10:30:39 2024-09-14 10:25:40 2024-09-14 10:25:03 2024-09-14 10:24:31 2024-09-14 10:24:18Derniers numérosRubriques connexesPlus>
- Quel est le principe et le mécanisme du dubbo
- Méthodes de lecture et d'écriture de fichiers Java DBF
- Comment supprimer un fichier sous Linux
- Touches de raccourci pour changer de fenêtre
- localhost8080 ne peut pas accéder à la solution
- fichier_get_contents
- De quelle marque est le téléphone mobile Nubia ?
- Comment ouvrir le panneau de configuration Win11