2012-12-13 22 views
0

工作出于某种原因,这个脚本Safari中并没有工作(在Windows上进行测试,认为它发生在Mac上也一样,虽然):jQuery的点击而非Safari

$("#searchTerms").focus(function() { 
    $(document).keypress(function(e) { 
     if(e.which == 13) { 
      $("#searchBtn img").click(); 
     } 
    }); 
}); 

的jsfiddle:http://jsfiddle.net/ux86V/

当用户按下回车键时,该脚本应该点击图像,同时关注搜索框(它必须以这种方式设置,并与一些奇怪的第三方服务绑定)。

编辑:它似乎没有在jsFiddle工作,但它的确如此,所以不要假设整个脚本是坏的。我认为jSFiddle只是防止重定向,我已经设置重定向到google.com为例。

编辑2:它似乎是.click()的问题。有没有其他替代方案可以使用,或者是注册点击元素的唯一方法?

编辑3:经过更多的测试,似乎jQuery的点击事件不知何故无法正常工作。这可能与表单提交方式有关,我不确定。链接到现场演示:http://www.weblinxinc.com/beta/blue-sky-marketing/demo/

+0

另一个问题就在这里,可能事是每次搜索字段获得焦点时添加一个新的'keypress'事件处理程序。 – jfrej

+0

问题不在于按键是点击,请参阅http://jsfiddle.net/ux86V/1/ – Musa

+0

在Windows的Safari 5中正常工作:http://jsfiddle.net/ux86V/3/ –

回答

0

13是回车键这是一种特殊键的代码,你可以捕捉它keyup

+1

所以相同的代码,只是'keyup'而不是'keypress'? – JacobTheDev

+0

如果你运行他的JSFiddle,它会捕获13! –

+0

刚刚尝试过的关键事物,它在Chrome中工作,但仍然在Safari中工作 – JacobTheDev

0

尝试使用trigger();

$("#searchTerms").focus(function() { 
    $(document).keyup(function(e) { 
     if(e.which == 13) { 
      $("#searchBtn img").trigger("click"); 
     } 
    }); 
});​ 
+0

同样的问题。什么都没发生。 – JacobTheDev

+0

我认为,这个问题导致你的这部分代码:'var link = document.getElementById('reflectedlink'); var input = document.getElementById('searchTerms'); input.onchange = input.onkeyup = function(){link.search ='?searchTerms ='+ encodeURIComponent(input.value); link.firstChild.data = link.href;};'如果你可以访问编辑这个部分,试着用jquery做这个动作,并与你的其他代码部分组合,以进入keypress的事情。 – fgokalp