Помогите решить не сложную на первый взгляд задачку. Есть форма поиска (людей) в очень большой базе данных. Представлена в двух вариантах – дефолтовый (easy) и advanced. Но уже с оформлением дефолтовой, простой формы возникли траблы – она не только интуитивно не понятна, она, пока что, всем своим видом вводит пользователя в заблуждение.

При этом в форме одно из первых двух полей (или имя, или фамилия) – обязательно. Если не заполнено хотя бы одно из них (или оба), то поиск по другим полям не возможен, если заполнено одно (или оба), то остальные поля (год, страна etc.) являются, правильнее сказать, фильтрами в результатах поиска. Обязательные для заполнения поля принято (уже привычно) отмечать звёздочками:

Но такая подсказка будет не верной, потому что сценарий, представленный на картинке, читается как “в форме есть ДВА обязательных поля – и имя, и фамилия”; на самом же деле каким-то образом нужно указать, что здесь два ведущих поля обязательны не по правилу “и”, а по правилу “или”. Остальные поля – не обязательны, но и поиск по ним, если не заполнено одно из двух первых, не возможен. Кнопка Search не блокируется, но при клике, если незаполнены первое и/или второе, показывается сообщение типа “укажите *имя* или *фамилию* персонажа”. Но получается, что эту информацию – о том, что одно из двух первых полей обязательно – пользователь получает уже после того, как попытался искать, указав, к примеру, страну проживания и год.
По логике разумно было бы признать, что элементами формы поиска здесь являются только текстбоксы “имя” и “фамилия”, остальные поля являются фильтрами в результатах поиска, но, поскольку аудитория приложения – совсем ни разу не гики и, возможно, даже не продвинутые пользователи, то распугивать их наличием блока “Фильтры” не хочется, и заказчик категорически против, да и разработчики с этим соглашаются. Варианты?
Просто отделить отступом или разделительной линией два первых текстобокса от остальных – явно будет недостаточное решение. Дизейблить (не давать возможности заполнить) вторичные поля-фильтры до тех пор, пока не заполнено одно из первых – нечестно и тоже непонятно. Попробовать разделить даже Easy Search на два блока, те два поля, одно из которых обязательно, в групбокс (или филдсет, кому как удобнее понять термин) Basic Search, второе – в Additional Search, причём до тех пор, пока в первом блоке не заполнено хотя бы одно из двух – второй блок неактивен:

Как только же в первой части формы заполнено хотя бы одно поле, т.е. получается, введена хотя бы одна буква в одном из двух текстбоксов, вторая часть формы становится активной:

В этом случае мы уходим от проблемы – как указать, что обязательное – одно из двух полей, уходим от звёздочек и задачи отобразить “и”/”или”. Но стало ли понятнее пользователю, что ему делать с этой формой? Да и вообще безобразие это – получается, мы даём пользователю не две формы, как планировалось изначально, а три – Basic, Additional и Advanced (фактически их две, да, но визуально первая тоже делится на две части)? Вынести же фильтровые поля (Additional) в форму Advanced Search тоже не очень правильно – поиск по имени, тем более не редкому, будет давать здоровенные списки результатов поиска, которые никто не будет просматривать/проверять, т.е. дополнительная фильтрация нужна здесь же, на главной (простой) форме.
В общем, на этом полёт фантазии закончился. Куда размышлять дальше?
Можно сменить название “Basic search” на “Search for first and/or last name”
Можно подсвечивать сами два поля или их названия другим цветом пока одно из них не заполнено (хотя да, это вариации на тему имевшегося предложения).
Тултип, кстати, надо бы сделать.
Можно сделать так, чтобы поясняющий текст (“введите одно, другое или и то, и другое, на свой вкус”) показывался только когда одно из полей получает фокус.
(ушёл работать обратно, сорри
)
Поясняющий текст – да, надо бы. Но одна из целей – максимальная компактность этого блока.
Ну, во-первых, самое логичное и понятное решение – одно поле, по которому будет искать и last, и first имена.
Во-вторых, подпись под сгруппированными полями Basic – заполните одно из них (или оба, ведь так?). Так ведь группировка уже есть.
Третье – вместо подписи – подробный тултип справа от филдсета, всплывающий справа.
Четвертое, самое логичное, как и первое, – отделение от следующих полей не только филдсетом, но и расположением ин7путов. Лучше имена поставить в строку, указав лейблы над ними, а между ними – надпись “or”.
И, на самом деле, самое верное решение – дать возможность искать как угодно, кроме как когда недостаточно информации. В том числе и только по дополнительным полям. Но, если все поля пустые или результата слишком много, выдавать эту же форму (заполненную), с надписью “недостаточно данных”. Среднестатистический пользователь добавит еще условий поиска в 90% случаев, не задумываясь.
В первом случае: база онлайновая, хоть и огромная, одно поле для first и last – это ведь и поиск будет длиться значительно дольше.
В четвёртом варианте: писать “or” вообще мне кажется неуместно: для Basic блока из двух первых текстбоксов потому, что там и/или, для Additional блока не только по этому (там везде и/или), но и потому, что конструкция из “элемент” – “or” – “элемент” – “or” – “элемент”… – обычно говорит о какой-то иерархии. Первым ставится наиболее приоритетный, “или” подчёркивает, что если первый не прошёл, переходим ко второму. Именно усиливает намёк на иерархию и без того вертикального блока.
Хм, онлайновая – это в смысле “чужая”? )) Ну смотри вариант с одним полем.
Люди ведь могут искать как по имени, так и по фамилии, так и по обеим вместе? Можем попробовать избавиться от лишнего в виде двух полей, сведя к одному.
Одно поле, в него “можно ввести Имя, Фамилию или оба сразу” (это типа тултип). Есть функция определение имени – в отличие от фамилии мы можем иметь список имен и какие-нибудь простые определения правил.
Если одно из слов (или если оно одно введено) и это имя – ищем по имени. Если нет – то как фамилия. Проблема в том, что некоторые имена бывают двойными, а также одинаковыми с фамилией (Johnes или как-то так))) – учим отличать их. В английском порядок обычно имя-фамилия, так что по умолчанию можно считать, что в двух нераспознанных словах первое – имя. Ну и так далее.
Если ничего не найдено, то либо подгружаем из базы альтернативный вариант поиска по имени-фамилии, или предлагаем пользователю “Может, Meredith – фамилия?”.
В таком случае лучше сделать проще и понятней пользователю, и оптимизировать уже более сложный алгоритм, чем пытаться втюхнуть сложный интерфейс, да еще сделать его понятным.
Это как не использовать вкладки (или разворачивающиеся списки, или…) в опциях, где 100 настроек, пытаясь сделать удобство “иконками” и выделением размеров.
Ну вот такой элегантный выход без двух форм
.
Не устраивает – надо думать дальше, если or не подходит, то начать надо хотя бы с отличного размещения – как я и говорил, с горизонтального вместо вертикального, чтобы отделить. Можно еще под формами сделать опять же тултип с надписью “заполните что-нибудь” и от него стрелочки к полям.
(ну почему у тебя подписки на комментарии нет ))))
К тому же – о приоритетах. Так считать, то и First Name с Last Name нельзя друг за другом ставить, фиг с ним, что так принято (и потому они так у них называются). Их надо как-то в 3D размещать ))
У юзабилити кроме Learnability (удобство в первый раз) есть еще и Effectivity (в последующие разы) и Memorability (“вспоминаемость” логики работы). Так что если результат будет максимально прозрачен (“Вы искали только по имени”), даже объяснений в самой форме не потребуется.
А зачем такая сложная форма? Простой поиск должен быть простым: текстовое поле ввода фамилии и имени, а все остальные поля выносятся в фасетные фильтры в результатах поиска.
В среднем случае в результатах поиска получаются большие списки. В некоторых (поиск по имени особенно) – очень большие списки.
тесты на графических экранах показали, что большинство пользователей хотят ограничивать результаты поиска регионом или годом сразу или как минимум после первой попытки базового поиска.
Я б сделал Одно поле (то, что в принципе приоритетное), но с возможностю Добавить второе поле (+ на кнопочке), которое автоматом додается внизу первого .
Звёздочку же ставить только когда активируется одно из полей, вторую – прятать.
Ну какое, какое ОДНО поле вы бы сделали показывающимся изначально, и какое второе – прятали/показывали бы по клику на плюсик? Они с одинаковым приоритетом по любому должны быть.
Да в принципе неважно… То, которое больше юзают!
Если человек захочет – сам выберет другое…
И еще одно – меня тёмная форма всегда отпугивает…
Возможность выбора скинов заложена в проект изначально (правда готов сейчас только один). Тёмный базовый – выбор заказчика, но в будущем, надеюсь, недалёком, мы подготовим ещё парочку скинов, посветлее
Поля “Имя” и “фамилия” в линию. Следуя здравому смыслу человек заполнить хотя бы одно из них точно.
Поля дополнительного поиска вообще невидимы и появляются если написана хотя бы одна буква в одном из двух основных поле. Лейбелы для полей можно вообще убрать (или сделать скрытыми) и внести подсказки по умолчанию в сами поля
Тут уже мой тезка высказался.
Если есть два поля, объединенные в “или”, используйте один textbox.
Далее, звездочки “обязательно” желательно ставить у заголовка поля ввода, а не справа от текстбокса.
в остальном согласен с Сергеем М., добавить, в принципе, нечего
Согласен с ребатами, написавшими выше, что:
1) Поля “имя” и “фамилия” можно объединить в одно, самостоятельно разбивая ланные на имя и фамилию перед отправкой закпроса к БД. Нужен справочник имен (его, собственно, из БД можно взять). Если введено два слова, но ни одного нет в справочнике имен:
а) можно спросить пользователя, что он имел в виду
б) можно не спрашивать. Если имени нет в справочнике, то и данных в БД по персонажу тоже нет. Но все слова могут быть фамилией… тогда пункт а)
Примеры реализации: ОБД “Мемориал”, Pandora
2) Basic форма могла бы быть more basic – одно поле с именем.
Можно добавить еще одно:
а) которое наиболее полезное (часто используемое), если есть статистика
б) которое позволит наиболее сильно ограничить выдачу (надо понимать, что за данные в БД)
Можно поискать по имени и, если в выдаче записей больше какого-то заданного числа, то попросить пользователя уточнить запрос, причем в выпадающих списках уже будут только допустимые значения.
А кто из них будет пользоваться системой?
Где то видел обозначение ]* объединение двух полей имя и фимилия скобкой с * посередине. Можно сделать так, что это обозначение исчезает как только пользователь убал фокус с одного из полей
Больно мудрёно, у обывателей нет ассоциаций с таким символом, не поймут-с.
Может сделать два первых поля просто попеременно “мигающими”?
Т.е., попеременно подсвечивать сначала одно, потом другое.
или с самого начала разные цвета при выделении!
А может так?
p.s. я правда не web-дизайнер
))
Тоже неплохо, но обычно мелкий текст второпях не особо читают.
Или читают, но видят то, что хотят увидеть.
Здесь же, я так понимаю, нужно сделать так, чтобы человек это выбрал интуитивно, не задумываясь.
Добавить поле количество записей (count).
Чтобы при заполнении пользлватель видел кол-во информации которое ему придется обработать.
Стандартная функция баз данных, но как мало сайтов ее использует…
Rcnfnb google уже додумался в стартовой странице на первых словах отписывать