2012-04-30 3 views
2

私は、その下に結果を入力するときにフィルタを持つテキストボックスを持っています。フォーカスがテキストボックスを離れると検出して結果divを隠すことができるjQueryがあります。しかし、その結果をクリックしてその結果を非表示にして、そのクリックを使用してそのアイテムの別のページにリダイレクトすることはできません。FF/Chrome/SafariのjQuery .has( ":focus")

.has(":focus")を使用して、結果がまたはその子にフォーカスしているかどうかを確認しています。私の問題は、これは私が言うことができる限り、IEでのみ動作するということです。誰でも知っている理由は?

$("#TextBox").blur(function() { 
    if ($("#ResultsDIV").has(":focus").length == 0) { //if you click on anything other than the results 
     $("#ResultsDIV").hide(); //hide the results 
    } 
}); 

UPDATE:私はこの作業を持っているClimbageにおかげで...

var resultsSelected = false; 
$("#ResultsDIV").hover(
    function() { resultsSelected = true; }, 
    function() { resultsSelected = false; } 
); 
$("#TextBox").blur(function() { 
    if (!resultsSelected) { //if you click on anything other than the results 
     $("#ResultsDIV").hide(); //hide the results 
    } 
}); 

実施例は:http://jsfiddle.net/cB2CN/

答えて

3

問題は、DOM上のすべての要素ではありません実際にフォーカスを受け取り、どのブラウザが行うのかはブラウザによって異なります。 Which HTML elements can receive focus?

#ResultsDIVには、グローバル変数を設定してクリックしたときに要素にフォーカスがあるかどうかを判断するイベントがある可能性があります。

+0

Genius!ホバーのアイデアはうまくいった... – Paul