у меня есть выпадающее меню - как я могу вызвать функцию JS при нажатии клавиш - PullRequest
0 голосов
/ 09 ноября 2010

Итак, у меня есть выпадающее меню из существующего поля ввода, которое генерируется на ходу.Допустим, поиск друзей.Как активировать функцию js, когда пользователь выбирает друга с помощью клавиши ввода.Я могу сделать это с помощью атрибута onclick js, но он не работает с onkeydown.

<% auto_complete_result_and_insert.each do |friend| %>
<li onkeydown="if (window.event.keyCode == 13) {alert('sth')}">
</li>
<% end %>

Итак, вопрос в том, как я могу определить, когда пользователь нажимает кнопку ввода в моем списке?

Ответы [ 2 ]

1 голос
/ 09 ноября 2010

Я не уверен, что LI (или любые другие не фокусируемые элементы для этой точки) могут фактически обрабатывать события onkeydown, так как они не могут иметь фокус.Ключи работают с элементами с фокусом.

Обновление: да, они могут фокусироваться, пока у них есть tabindex.Просто назначьте разные элементы tabindex = "1", 2 и т. Д. Элементам LI.

Вот пример того, как сделать это с обычными полями формы

<script>
function handleKey(e){
  var n = (window.Event) ? e.which : e.keyCode;
  if (n == 13) {alert('sth')}
}
</script>
<select onkeydown="handleKey(event);">
  <option value="test">test</option>
  <option value="test">test</option>
</select>
1 голос
/ 09 ноября 2010

Если вы используете Ruby on Rails, то у вас есть инфраструктура Prototype. Прототип позволит вам наблюдать за событиями нажатия клавиш.

Вот ссылка на API: http://api.prototypejs.org/dom/event/

Вот код, который вы ищете:

Event.observe(id_of_element, function(event) {

    if(event.keyCode==13) {

        // do your thang

   }

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...