Как вызвать нажатие на клавиатуре с помощью 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 поэтому мы не можем увидеть, если это вина.

Другие вопросы по тегам