web-dev-qa-db-fra.com

Quelle est la meilleure façon d'afficher les erreurs de validation de la date?

J'effectue une validation de date sur plusieurs formulaires. Cette validation inclut le fait de s'assurer qu'une date ne tombe pas un week-end, ne tombe pas un jour férié majeur, soit au moins 3 jours ouvrables à compter de la date actuelle.

J'affiche actuellement les messages d'erreur un par un - si la date est un week-end, je m'arrête et je renvoie le message. Si la date n'est pas un week-end, mais est en vacances, je m'arrête et renvoie le message. Etc..

L'autre jour, j'ai visité un site Web qui a validé plusieurs scénarios de date et j'ai renvoyé le message.

Je me demande ce que tout le monde pense est la meilleure façon d'afficher ces erreurs - une à la fois ou une combinaison.

  1. Un à la fois:

    • si l'utilisateur sélectionne un samedi/dimanche:
      • "Veuillez sélectionner une date qui ne tombe pas un week-end"
    • si l'utilisateur le corrige mais choisit un jour férié, alors:
      • "Veuillez sélectionner une date qui ne tombe pas un jour férié"
    • si l'utilisateur le corrige mais choisit demain, alors:
      • "Veuillez sélectionner une date dans au moins 3 jours ouvrables à partir de maintenant"
  2. Tout à la fois:

    • si l'utilisateur sélectionne un week-end, un jour férié ou demain, alors:

      • "Veuillez sélectionner une date qui ne tombe pas un week-end"
      • "Veuillez sélectionner une date qui ne tombe pas un jour férié"
      • "Veuillez sélectionner une date dans au moins 3 jours ouvrables à partir de maintenant"

        1. Une combinaison
    • si l'utilisateur sélectionne un samedi/dimanche ou un jour férié:

      • "Veuillez sélectionner une date qui ne tombe pas un week-end"
      • "Veuillez sélectionner une date qui ne tombe pas un jour férié"
    • si l'utilisateur le corrige mais choisit demain, alors:
      • "Veuillez sélectionner une date dans au moins 3 jours ouvrables à partir de maintenant"

Pour info, le fait de ne pas autoriser la sélection de certaines valeurs n’exclut pas la nécessité d’une validation. N'oubliez pas, quelqu'un pourrait utiliser quelque chose comme TamperIE ou Fiddler pour manipuler le post du formulaire! Le fait de griser les dates arrête le problème côté client, mais j'ai toujours besoin d'une validation côté serveur pour gérer les valeurs du formulaire APRÈS publication.

10
Eric Belair

Affichage d'un message d'erreur

Idéalement, vous voulez une combinaison de vos suggestions # 1 et # 2:

Please select a date that doesn't fall on a weekend or a holiday and is at least 3 business days from now.

La raison pour laquelle c'est la meilleure option est parce que c'est ce que vous diriez à une personne si elle se tenait à côté de vous. Une bonne règle de base pour la copie d'erreur, ou toute microcopie, est d'abord écrivez-la comme vous le diriez, puis adaptez-la au modèle que vous avez. Étant donné que votre modèle est un message d'erreur affiché lorsqu'un utilisateur interagit avec un formulaire, il est parfaitement possible d'imprimer simplement cette phrase.

La partie difficile consiste à rendre la phrase dynamique pour diverses erreurs possibles, mais même ce n'est pas très difficile si vous savez d'avance ce qui peut mal tourner et quelles combinaisons d'état la forme peut avoir.

Ne pas avoir à afficher un message d'erreur en premier lieu

Maintenant, une autre approche que vous pouvez adopter est en vous demandant pourquoi vous devez informer l'utilisateur de ces erreurs. Qu'en est-il du formulaire qui pousse les utilisateurs à les remplir par erreur? Pourquoi autorisez-vous ces possibilités si elles ne sont pas autorisées par la logique métier?

Vous pouvez envisager de modifier les contrôles disponibles pour l'utilisateur afin qu'ils ne permettent pas les situations non valides. Par exemple, le problème de date peut être résolu de manière triviale en utilisant un contrôle de calendrier. Dans le contrôle du calendrier, vous pouvez faire en sorte que les week-ends, jours fériés et jours entre maintenant et trois jours ouvrables à partir de maintenant ne soient pas sélectionnables. De cette façon, l'utilisateur n'aurait jamais à faire face à un message d'erreur en premier lieu. N'oubliez pas de communiquer clairement à l'aide de la copie pourquoi le contrôle du calendrier interdit certains jours.

13
Rahul

Je montrerais tous les critères de validation à la fois pour éviter l'irritation de soumettre continuellement le formulaire jusqu'à ce que vous remplissiez certains critères invisibles. Idéalement, cela devrait être affiché avant même qu'une date ne soit entrée

Je voudrais également souligner lequel des critères n’a pas précisé clairement pourquoi il a échoué dans ce cas, en particulier avec des critères aussi complexes.

Cela dit, restreindre la saisie à l'aide d'un sélecteur de date est un itinéraire encore meilleur.

6
ICR

Toujours indiquer quelle (s) condition (s) violée (s)

Donnez un message d'erreur plus informatif:

"Les dates doivent être au moins 3 jours ouvrables à l'avenir et non les jours fériés ou les week-ends."

Mettez la ou les conditions pertinentes violées en gras.

Sélecteur de date?

Pensez à utiliser un sélecteur de date. Cela peut leur faciliter la tâche. Grisez les dates invalides.

4
James Crook

Considérez une variante de votre deuxième option: "La date doit être d'au moins trois jours à partir de maintenant, un jour de semaine et non un jour férié. Veuillez sélectionner une nouvelle date." Vous devriez dire à l'utilisateur toutes les règles à l'avance plutôt que de le faire échouer plusieurs fois par manque d'informations, mais les répétitions de "veuillez sélectionner" donnent l'impression que vous appelez pour plusieurs actions.

(Personnellement, j'ai tendance à ignorer la langue "veuillez corriger"; en n'acceptant pas le formulaire et en signalant une erreur importante, je pense que j'ai déjà transmis cela. Mais vous ne l'avez pas demandé à ce sujet, j'ai donc conservé le modèle dans ma réponse.)

1
Monica Cellio