Как клавиатуры вниз или вверх между выпадающего меню «Параметры»?

голоса
13

У меня есть пользовательский встроенный Аякс [DIV] на основе динамической раскрывающийся.

У меня есть [Input] окно , в котором; onkeyup, Запускает поиск Ajax , который возвращает результаты в divсек и вытягивают обратно в использовании innerHTML. Это divвсе , есть моменты onmouseoverтак, типичный успешный поиск дает следующую структуру (простите за пол-код):

[input]
 [div id=results] //this gets overwritten contantly by my AJAX function
  [div id=result1 onmouseover=highlight onclick=input.value=result1]
  [div id=result2 onmouseover=highlight onclick=input.value=result2]
  [div id=result2 onmouseover=highlight onclick=input.value=result2]
 [/div]

Оно работает.

Тем не менее, я пропускаю важные функции, лежащие в обычных HTML-элементов. Я не могу клавиатуры вниз или вверх между «вариантами».

Я знаю , что Javascript обрабатывает события клавиатуры , но; Я не был в состоянии найти хорошее руководство. (Конечно, следить за вопрос будет в конечном итоге: я могу использовать , <ENTER>чтобы вызвать это onclickсобытие?)

Задан 07/08/2008 в 16:58
источник пользователем
На других языках...                            


2 ответов

голоса
4

Что вам нужно сделать , это приложить слушатель событий к divс id="results". Вы можете сделать это, добавив onkeyup, onkeydownи т.д. атрибуты к divпри ее создании или вы можете прикрепить их с помощью JavaScript.

Моя рекомендация будет использовать библиотеку AJAX , как YUI , JQuery , Prototype и т.д. по двум причинам:

  1. Похоже , что вы пытаетесь создать автоматический полный контроль , который является то , что большинство AJAX найти библиотеки должны обеспечить. Если вы можете использовать существующий компонент вы сэкономите много времени.
  2. Даже если вы не хотите использовать управление, предоставляемое в библиотеке, все библиотеки предоставляют библиотеки событий, которые помогают скрыть различия между API-интерфейсами событий, обеспечиваемых различными браузерами.

Забудьте addEvent, используйте Event Utility Yahoo! 'S обеспечивает хороший обзор того , что библиотека события должна обеспечить для вас. Я уверен , что библиотеки событий обеспечивается JQuery, Prototype и др. и др. предоставляют аналогичные функции.

Если эта статья проходит через вашу голову взглянуть на эту документацию , а затем повторно прочитать оригинальную статью (я нашел статью больше смысла после того, как я использовал библиотеку событий).

Несколько других вещей:

  • Использование JavaScript дает гораздо больше контроля , чем писать и onkeyupт.д. атрибутов в вашем HTML. Если вы не хотите сделать что - то действительно просто я хотел бы использовать JavaScript.
  • Если вы написать свой собственный код для обработки событий клавиатуры хороший ключ код ссылки действительно удобно.
Ответил 17/08/2008 в 21:48
источник пользователем

голоса
0

С верхней части моей головы, я бы думать, что вы должны были бы поддерживать некоторую форму структуры данных в JavaScript, который отражает элементы в текущем списке. Вы бы также нужна ссылка на текущий активный / выбранный элемент.

Каждый раз , keyupили keydownобжигают, обновить ссылку на активный / выбранный элемент в структуре данных. Для того, чтобы обеспечить выделение информации о UI, добавить или удалить имя класса , который стилизован с помощью CSS на основе , если элемент активен / выбран или нет.

Кроме того , это не Бигги, но innerHTMLна самом деле не стандарт (смотреть на createTextNode(), createElement()и appendChild()для стандартных способов создания данных). Вы также можете увидеть о присоединении обработчиков событий в JavaScript , а не делать это в атрибуте HTML.

Ответил 07/08/2008 в 17:11
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more