Mám formulář obsahující (mimo jiné) 3 rozevírací seznamy, každý s asi 5-10 možnostmi. Volby v těchto rozbalovacích seznamech úzce souvisejí a některé z permutací budou neplatné. To také znamená, že pokud uživatel změní výběr v jednom z rozevíracích seznamů, mohou být aktuální hodnoty v ostatních dvou neplatné.
Můj návrhový dokument v současné době uvádí, že „pokud je vybrána neplatná kombinace, měla by se zobrazit chyba“ a „aby se uživateli umožnilo vybrat platné kombinace, všechny volby v rozevíracích seznamech, které vytvoří neplatnou kombinaci, by měly být v rozbalovacím seznamu slabě osvětlené. ".
Nejsem přesvědčen, že je to nejlepší způsob, jak se s tím vypořádat, ale nedokážu vymyslet lepší alternativy. Přemýšlel jsem o jejich sloučení do jediného rozevíracího seznamu obsahujícího všechny platné kombinace, ale to by také mohlo být obtížné.
Má někdo jiná řešení?
Pokud můžete určit pořadí mezi rozevíracími seznamy, řešení je relativně snadné:
Každý výběr z rozevíracího seznamu resetuje výběr v následujících rozevíracích seznamech (za =) - Rovněž aktualizuje dostupná pole tak, aby odpovídala aktuálnímu výběru v tomto rozevíracím seznamu (nezobrazuje nepovolené) možnosti).
Zvažte například starší mapy: Můžete si vybrat stát, pak město a teprve pak ulici. Bylo by docela přijatelné, že kdybyste změnili stav, ztratili byste město, které jste si dříve vybrali.
Pokud neexistuje žádný odlišný řád , můžete:
Zakázat výběr nových hodnot, které jsou v rozporu s existujícím výběrem.
Předpokládám, že můžete tyto možnosti v rozevíracím seznamu „slabě osvětlit“ (před samotným výběrem) ještě před výběrem.
„Nízké osvětlení“ (jak jste to uvedl) takové problematické nové hodnoty, ale umožňují uživateli je vybírat.
Poté můžete zobrazit dialogové okno s vysvětlením, že nová hodnota je problematická.
Uživatel si může vybrat:
V každém případě musí mít dialog zaškrtávací políčko „zapamatovat si volbu“, takže příště uživatel nebude chybovat.
I když chápu, že by zde mohl být problém s nedostatkem vertikálního prostoru, rozhodně bych se pokusil nepoužívat rozevírací seznamy, zkusil bych místo toho použít prvky typu seznamu (vyberte více skupin nebo skupiny rádiových vstupů) ) - to umožňuje uživateli vidět změny, které se dějí, zatímco vybere něco v jedné skupině, které ovlivní možnosti v jiných skupinách.
Rovněž - pokusil bych se alespoň a) poskytnout zkratku k většině běžných výběrových sad b) zkusit přepracovat celou věc. Toto rozhraní nelze nazvat „jednoduchým“, bez ohledu na to, jak hladké to dokážete :)
Viděno to mnohokrát, a zatímco je zřejmé, že je „zakázat“ neplatné kombinace, má to některé nevýhody:
To, co navrhuji, není zakázat neplatná rozhodnutí. Vaše specifikace neříká, že by měly být zakázány; slabé osvětlení není stejné. Rozlišujte protiprávní rozhodnutí od legálních, a to bez zdůraznění, ale nechte je vybrat. Spojte to s oblastí zpráv, která se zobrazí, když je vybrána nelegální kombinace, s uvedením důvodu a navržením alternativy (a neumožněním uživateli přistoupit k dalšímu kroku).
To vše je neplatné a neplatné, pokud je možné volby rozdělit do posloupnosti: pak má mnohem větší smysl prezentovat volby postupně a zakazovat jakékoli nezákonné, když je každá volba předložena.
Pokud jsou některé možnosti neplatné, neměli byste je jednoduše zobrazit. Tím se sníží možnost, že se uživateli zobrazí chyba.
Pokud se jedná o webovou aplikaci, použijte JavaScript k odstranění neplatných voleb v závislosti na výběru. Po použití prvního rozbalovacího seznamu postupně odhalte druhé rozbalovací menu s příslušnými možnostmi. Ditto pro třetí. Ověření na straně serveru a pouze v případě, že se po ověření na straně serveru neověřuje, měli byste zobrazit chybu. Chyba se zobrazí pouze těm, kteří mají zakázaný JavaScript nebo těm, kteří se záměrně snaží obejít váš formulář.
Pokud se jedná o aplikaci pro stolní počítače, použijte stejný typ principu.