0

我需要触发单击某个按键操作,如果它是我的键盘脚本上的向上或向下键,将从指定元素中删除某些类。所以按键工作但触发和上下按下不,这是我的代码,寻求帮助。

$('.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');    
    }
});  
4

3 回答 3

3

您可以尝试以下代码:

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

输入e.which所需字符的代码。

于 2013-01-11T14:17:13.313 回答
0

您必须像这样检查 evt 按键:

if (evt.which == 40) {  }

使用 keypress 时,通常我会在函数内运行任何代码之前检查我想要与之交互的键。如果您不这样做,您的代码将使用任何按键运行。

于 2013-01-11T14:08:55.070 回答
0

.keypress()在这里可能不是您最好的解决方案,您最好使用keydown()andkeyup()或使用完整版:.bind('keydown', handler)(keyup 同上)

来自 jquery 文档:

注意:由于 keypress 事件未包含在任何官方规范中,因此使用它时遇到的实际行为可能因浏览器、浏览器版本和平台而异。 http://api.jquery.com/keypress/

.click()是简写.trigger("click"),你用得很好,但你真的有一个点击处理程序$('.scroll-pane)吗?

您的代码将(假设浏览器依赖项)导致两次点击被触发$('.scroll-pane'),然后if()被评估。但是您没有向我们展示您的点击处理程序,scroll-pane因此我们无法查看这是否有问题。

于 2013-01-11T14:15:23.877 回答