web-dev-qa-db-fra.com

Formulaires complexes et cohérence des données

J'ai une vue d'entrée de données complexe que vous pouvez voir dans cette maquette:

enter image description here

Comme vous pouvez le voir, j'ai n Parameters (~ 20) par n Catgories (~ 3-5), et chaque paramètre a un ensemble d'entrées assez complexe.

Des exemples d'entrées pourraient être tels que:

  • 200 $ par 12 mois
  • 4 unités par 2 ans
  • 4 unités @ 200 $ par unité
  • 3 unités @ montant raisonnable
  • 300 $ @ 200 $ par unité Ce n'est pas possible
  • 300 $ @ valeur raisonnable Ce n'est pas possible
  • etc.

Ce qui me dérange à ce sujet, c'est que la deuxième zone de liste déroulante n'a pas un type de données uniforme. Il a un laps de temps (mois, années), une unité ($ par unité) et une valeur arbitraire (montant raisonnable, qui devrait désactiver la case value). Aussi, $ per unit n'a pas de sens si l'utilisateur sélectionne un montant en dollars à gauche. Je sais que je pourrais coder un peu de magie JS pour que tout cela joue Nice et invalider les entrées impossibles respectives, mais ça ne va pas.

Quelqu'un a-t-il des idées sur la façon dont je pourrais scinder de façon optimale quelque chose comme ça, sans (et c'est important) rendre l'entrée beaucoup plus complexe qu'elle ne l'est déjà. La complexité est un facteur sérieux ici compte tenu des n * n lignes et colonnes (je n'aurais probablement pas dû utiliser n deux fois).

2
Mike A

Il y a trop de décisions à prendre en même temps à ce sujet. Vous devez utiliser JavaScript pour invalider progressivement les choix ultérieurs, mais peut-être pas de la façon dont vous le pensiez.

Dans un cas comme celui-ci, j'essayerais de le diviser en étapes et de générer automatiquement une forme beaucoup plus étroite à partir du premier choix. Vous pouvez supprimer toute combinaison illégale lorsque vous affichez le nouveau formulaire.

Il semble que vous puissiez prendre trois paramètres ($/unités, par/@ et mois/année/unité/raisonnable) et les combiner, puis commencer par une liste exhaustive avec les combinaisons illégales supprimées (j'ai peut-être manqué certaines combinaisons légales) . Vous irez bien tant que vous n'obtiendrez pas beaucoup plus que 8-10. Pour l'utilisateur, il s'agit d'une simple correspondance de motifs.

Ensuite, crachez simplement le formulaire très spécifique en fonction de ce qu'ils ont choisi dans la liste déroulante. La gestion des erreurs sera facile car s'ils choisissent la mauvaise liste déroulante, les données qu'ils essaient de saisir ne rentreront pas

enter image description here

6
Jeremy T