2013-10-04 123 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

相關問題