2013-10-04 80 views
0

我正在开发一个项目,其中包括一个smartsearch引擎。在jQuery中选择除...以外的所有元素

我想写一个方法,让客户端在smartsearch内部写入,即使它没有关注。 F.E.浏览该网站,客户端点击一键焦点跳转到smartsearch。

这是工作的罚款与这个简单的代码:

$(document).ready(function() 
{ 
$("*").keydown(function() 
{ 
    $("input.ss-24#b").focus(); 
}); 
}); 

但是,是的,你可以看到,它unfocuses其他输入过了,这不是我想要的方式。 我尝试了好几种 '可能的解决方案',像:不()甚至。不是()方法,如:

$(document).ready(function() 
{ 
$("*").not("input").keydown(function() 
{ 
    $("input.ss-24#b").focus(); 
}); 
}); 

但它仍然 unfocuses领域与 “输入” 标记名了。我应该如何强制jQuery 而不是选择输入字段这个事件监听器?

谢谢,史蒂文。

+2

你输入元素是其他元素,如''和''将在冒泡事件触发内。 – zzzzBov

+0

我有一种直觉,认为'$(document).keydown(function(){$('#b')。focus();})'就足够了。 – Brian

+0

是的,Brian,你说得对。 我很确定这个问题与这个问题有关,@zzzzBov。 –

回答

2
$(document).keydown(function() { 
     if (!$('input').filter(':focus').length) { 

      $('#b').focus(); 

     }  
}); 

Working fiddle

0
$(document).ready(function() { 
    $(document).keydown(function (e) { 
    $("input.ss-24#b").focus(); 
    }); 
}); 

这工作?

http://jsfiddle.net/Xbbu8/

+0

当然,谢谢,但它将如何解决问题呢? –

+0

他可能忘了添加e.stopPropagation或immediatePropagation :) – Alex

相关问题