Как вызвать нажатие клавиши с помощью jquery

Мне нужно вызвать щелчок по какому-либо действию нажатия клавиши, также, если это клавиша вверх или вниз на моем сценарии клавиатуры, будет удален какой-то класс из указанного элемента. Итак, нажатие клавиши работает, но триггер и нажатие вверх-вниз - нет, это мой код, спасибо за помощь.

$('.main_search_field').keypress(function(evt){
    $('.live_search_plugin').addClass('visible');

    var scroll_pane = $('.scroll-pane');
        scroll_pane.click();
        scroll_pane.trigger('click');
    if (evt.keyCode == 40) {
        $('.live_search_list ul li').removeClass('active');    
    }
});  

person Lukas    schedule 11.01.2013    source источник
comment
Почему вы хотите вызвать клик? Лучше назначить обработчик на событие клика, а затем просто запускать обработчик там, где вам нужно.   -  person Dziad Borowy    schedule 11.01.2013
comment
bc у меня есть список в области прокрутки, и если я нажму на него, я могу прокручивать этот список с помощью клавиш вверх и вниз, прежде чем щелкнуть, я прокручиваю всю страницу - тело   -  person Lukas    schedule 11.01.2013
comment
Я понимаю! в этом случае вам нужно поместить фокус на этот список (но только видимые входы, ссылки и кнопки могут быть сфокусированы). срабатывание клика не сработает   -  person Dziad Borowy    schedule 11.01.2013


Ответы (3)


Вы можете попробовать следующий код:

var e = jQuery.Event("keypress");
e.which = 50;
$(".main_search_field").trigger(e);

В e.which введите код нужного символа.

person Marcin Buciora    schedule 11.01.2013

Вы должны проверить нажатие клавиши evt следующим образом:

if (evt.which == 40) {  }

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

person rafaelbiten    schedule 11.01.2013

.keypress() может быть не лучшим решением здесь, вам лучше использовать keydown() и keyup() или использовать полную версию: .bind('keydown', handler) (то же самое для keyup)

Из документов jquery:

Примечание: поскольку событие нажатия клавиши не охвачено какой-либо официальной спецификацией, фактическое поведение, возникающее при его использовании, может различаться в разных браузерах, версиях браузеров и платформах. http://api.jquery.com/keypress/

.click() — это сокращение от .trigger("click"), и вы его прекрасно используете, но действительно ли у вас есть обработчик кликов для $('.scroll-pane)?

Ваш код (при условии зависимости браузера) вызовет два щелчка по $('.scroll-pane'), а затем будет оценен if(). Но вы не показали нам свой обработчик кликов для scroll-pane, поэтому мы не можем понять, виноват ли он.

person Coder    schedule 11.01.2013
comment
мой блок панели прокрутки - это поиск в реальном времени, поэтому, когда я набираю некоторые слова в своем поисковом вводе, отображается блок панели прокрутки, в то же время я хочу инициировать щелчок по этому списку /scroll_pane для прокрутки этого списка с помощью клавиши вверх - person Lukas; 11.01.2013