Перейдите к имени пользователя на веб-странице, если на клавиатуре нажата первая буква имени


У меня есть страница со списком примерно из 500 имен. Пользователь хотел бы ввести, например, s на своей клавиатуре, а затем страница автоматически прокрутится до имен, начинающихся с s.

Должен ли я преобразовать первую букву этих имен в INT, указать это значение INT в качестве атрибута данных и добавить функцию jQuery на страницу или есть лучшее решение?

Author: Roopendra, 2013-01-18

3 answers

Я бы предложил встроить список имен для каждого символа в div с соответствующим id, например, для имен, начинающихся с S:

<div id="S">
  ... names with S ...
</div>

Затем вы можете использовать jQuery для реагирования на нажатие клавиши и просто выполнить

location.href = '#S';

Затем браузер автоматически перейдет к соответствующему div. Еще одним преимуществом этого является то, что вы даже можете использовать URL-адрес, чтобы поместить его в избранное, поэтому, если вы хотите перейти непосредственно ко всем людям с S, вы можете сделать это легко.

Обновление: Поскольку функция .keypress() jQuery возвращает только число, а не сам символ, вам необходимо преобразовать его. Смотрите Преобразование символа в код ASCII в Javascript для примера того, как преобразовать символ в число и наоборот.

 4
Author: Golo Roden, 2017-05-23 12:18:48

Если вы ищете что-то немного быстрее, вы можете выполнить следующий трюк (я предполагаю, что имена упорядочены).

Вы добавляете к первому элементу, у которого есть определенная буква id="letter_X", и когда пользователь прокручивает, вы просто используете идентификатор в качестве привязки (my_url#letter_X).

Это самый быстрый способ, который я знаю для этого, но он работает только для одной буквы.

PS: в html5 якоря теперь являются идентификаторами элементов и могут быть добавлены к любому элементу html.

 0
Author: Vlad Preda, 2013-01-18 13:08:40

Я думаю, вам следует использовать раздел с идентификатором для тега. затем выполните $.scrollTop() из jquery.

$(window).scrollTop($('section#user_id').offset().top);
 0
Author: Priya, 2013-01-18 13:13:54