Notre application embrasse un peu un motif sombre: deux formulaires sur une seule page. Le filtre et la recherche sont des formulaires indépendants. Lorsque la validation du formulaire de recherche échoue - actuellement, notre seule validation est "terme de recherche inférieur à deux caractères" - l'utilisateur peut ignorer le formulaire de recherche à l'état d'erreur et interagir avec les filtres à la place.
Quel est le comportement attendu lorsqu'un utilisateur ignore l'erreur de recherche et continue d'appliquer des filtres?
Merci pour votre perspicacité -
Je pense que la première question à se poser est pourquoi validez-vous le texte de recherche? Si l'utilisateur peut ignorer l'erreur de validation, ne l'affichez pas. Un message d'erreur semble être une étape supplémentaire inutile, l'utilisateur n'a pas besoin de savoir qu'il n'est pas censé rechercher 2 caractères ou moins, il suffit de le guider pour apprendre que ses recherches doivent être plus détaillées. La condition est remplie car vous n'autorisez pas l'utilisateur à rechercher moins de 2 caractères, mais vous ne lui montrez pas réellement l'erreur.
Étant donné que tous les résultats sont affichés sur la page depuis le début, une alternative et peut-être une meilleure façon de le faire pourrait être d'avoir une liste de résultats de saisie automatique qui se met à jour lorsqu'un utilisateur tape une lettre à la fois dans la zone de recherche. Il élimine le besoin du message d'erreur et est plus convivial pour les aider à filtrer pour trouver les données dont ils ont besoin.
Normalement, une recherche est un filtre effectué côté serveur. Les résultats de la recherche sont les résultats filtrés de tous les éléments.
Dans votre cas, comme tous les résultats sont affichés depuis le début, la recherche est mieux comprise comme un autre filtre que comme une recherche qui appelle des résultats .
Si vous le voyez de cette façon, la réponse est plus simple: comme la recherche est un autre filtre, s'il n'y a rien de spécifié ou rien de valide (moins de 2 caractères), alors ce filtre ne s'applique pas. Les autres, cependant, s'appliquent toujours.
Ce n'est qu'un croquis rapide (il manque d'étiquettes, etc.). J'ai également ajouté "Tous" dans la catégorie, le sujet et le format, car je pense que cela reflète plus clairement ce qui est visible.
Notre solution
Étant donné que la seule condition d'erreur pour le formulaire de recherche est une recherche "trop courte" (l'un d'un seul caractère), nous avons choisi d'interpréter l'utilisateur ignorant le champ de recherche d'état d'erreur comme abandonnant la recherche de texte pour le filtrage basé sur des cases à cocher.
Selon les exigences des parties prenantes, les résultats de la recherche peuvent être filtrés. Pour appliquer un filtre à un jeu de résultats, une chaîne de paramètres de requête est ajoutée à l'URL. Lors de la création de cette URL, la requête de recherche - la valeur dans le champ de saisie de recherche - est également ajoutée, si elle a été définie. Cela a été un effort insignifiant d'ajouter une vérification supplémentaire avec le "S'il y a une valeur dans le champ de recherche" pour étendre cette vérification à "S'il y a une valeur dans le champ de recherche ET c'est au moins 2 caractères."
Pas de refactoring majeur du balisage.
Nous sommes toujours coincés avec quelque chose d'un motif sombre, mais c'est le motif sombre requis par la conception approuvée.