Как вызвать нажатие на клавиатуре с помощью 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');
}
});
3 ответа
Вы можете попробовать следующий код:
var e = jQuery.Event("keypress");
e.which = 50;
$(".main_search_field").trigger(e);
В e.which
поставить код для требуемого символа.
Вы должны проверить нажатие клавиши evt следующим образом:
if (evt.which == 40) { }
При использовании нажатия клавиш обычно я проверяю, с какой клавишей я хочу взаимодействовать, прежде чем запускать какой-либо код внутри моей функции. Если вы этого не сделаете, ваш код будет работать с любым нажатием клавиши.
.keypress()
не может быть вашим лучшим решением здесь, вы могли бы быть лучше, используя keydown()
а также keyup()
или использовать полную версию: .bind('keydown', handler)
(то же самое для keyup)
Из документации JQuery:
Примечание: поскольку событие нажатия клавиши не охватывается какой-либо официальной спецификацией, фактическое поведение, возникающее при его использовании, может отличаться в зависимости от браузера, версии браузера и платформы. http://api.jquery.com/keypress/
.click()
это сокращение для .trigger("click")
и вы используете это нормально, но у вас есть обработчик кликов на $('.scroll-pane)
?
Ваш код (при условии зависимости браузера) вызовет два клика по $('.scroll-pane')
а затем if()
быть оцененным. Но вы не показали нам свой обработчик кликов для scroll-pane
поэтому мы не можем увидеть, если это вина.