2013-01-11 109 views
0

我需要触发点击某个按键动作,同样如果它是在我的键盘上的向上或向下键脚本将从指定元素中删除某些类。所以按键正在工作,但触发和向下按没有,这是我的代码,需要帮助。如何用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');  
    } 
}); 
+0

为什么要触发点击?最好为click事件分配一个处理程序,然后在需要的地方运行处理程序。 – tborychowski

+0

BC我滚动窗格中的列表,如果我点击它,我可以通过键上下滚动这个列表,然后点击我滚动整个页面 - 身体 – Lukas

+0

我明白了!在这种情况下,你需要把重点放在这个列表上(但只能看到可见的输入,链接和按钮)。触发点击将不起作用 – tborychowski

回答

3

你可以试试下面的代码:

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

e.which所需字符放置代码。

0

你必须检查的EVT按键像这样:

if (evt.which == 40) { } 

当使用按键,平时我检查哪个键我想我的运行函数中的任何代码之前进行互动。如果你不这样做,你的代码将在任何按键下运行。

0

.keypress()可能不会在这里的最佳解决方案,可以更好使用keydown()keyup(),或使用完整版本:.bind('keydown', handler)(同上,用于KEYUP)

从jQuery文档:

注意:由于keypress事件未被任何官方规范所覆盖,因此在浏览器,浏览器版本和平台上使用时遇到的实际行为可能会有所不同。 http://api.jquery.com/keypress/

.click().trigger("click")速记和你正在使用它很好,但实际上,你有$('.scroll-pane)一个单击处理?

您的代码将(假设浏览器依赖关系)在$('.scroll-pane')上触发两次点击,然后if()进行评估。但你没有向我们展示你的点击处理程序scroll-pane,所以我们不能看出是否有问题。

+0

我的滚动窗格块是一个实时搜索,所以当我在我的搜索输入上键入一些字时,滚动窗格块显示,同时我想触发点击此列表/ scroll_pane for通过keyup keydown滚动这个列表 – Lukas