2011-10-31 16 views
33

私は動的にロードされたタブ/コンテンツを含むJSONのダイアログを持っています。複雑さのために、私は実際にフィドルや関連コード(あまりにも多くのコード)を投稿することはできません。プログラムでフォーカスを削除しますか?

何が起こっているかは、ダイアログが開いたときに、ダイアログ内の要素を最初のタブまでタブで移動できることです。その後、他の場所にタブすることはできません。他の場所をクリックしても、フォーカスはそのタブでロックされ、フォーカスはそのタブでロックされます。

この問題の原因を特定できません。

フォーカスをプログラムから削除するにはどうすればよいですか?

+0

どのブラウザが使用していますか? IEでは、正当な理由がなければフォーカスを失うことがあります。 – Hossein

+0

フォーカス切り替えを手動で管理するために、TABのキー押下イベントを上書きしましたか(モーダルダイアログボックスを表示しているときのように)? –

+0

私がkeypressイベントを見る唯一の場所は、keydown関数がタブの内容に下向きの矢印を押すことができることです。それはすべてのブラウザに共通しています。 – Jason

答えて

55

これは役立つかもしれない...

http://api.jquery.com/blur/

$('#tabName').blur(); 
+1

これは正解ですが、私は自分の状況を明確に説明していませんでした。それに応じて更新します。ありがとう。 – Jason

+3

これはうまく動作し、同様の問題を解決しました。あなたがjQueryを使用していて、これを一般的にイベントのスコープに適用する必要がある場合は、次のような簡単な変更をお勧めします: '$(document.activeElement).blur()' - アクティブなものはフォーカスを失いますイベントの時に – Markus

+2

純粋なJavaScriptでそれを行うには? – AmerllicA

0

私は、JSがどこに失敗しているのかを知るためにアラートの負荷をかけます。例えば。

alert(1); 
var a = 10; 
alert(2); 
var b = null; 
alert(3); 
a += 5; 
alert(4); 
b.hello(); 
alert(5); 

もちろん、この例では最後の警告は、それは素敵なアプローチではなく、誰もがどこかの時点でそれを行う必要があります。4.

になります。

+9

アラートは、特にmousemove、ホバーなどのイベントに反応する場合、デバッグする適切な方法ではありません。ほとんどのブラウザは 'console.log(...);'を使って書くことができる最近ではデバッグコンソールを持っています。 – ThiefMaster

+6

デバッグの正しい方法は、最も効率的な方法でバグを追跡するのに役立ちます。アラートは、実行を一時停止するため、デバッグに非常に役立ちます。ちょうど昨日私は不思議なjQueryアニメーションをデバッグしていました。そして、 'console.log()'は非常に速く起こったので、この視覚的グリッチがどこから来たのかを特定するのに役に立たなかった。アラートを追加すると、各ステップでアニメーションが一時停止し、グリッチが発生した場所を正確に見つけることができました。あなたはOPsメソッドが適切な方法ではなく、 'console.log()'はその場合より優れていますが、 'alert()'はデバッグの場所を持っています。 – Gavin

+1

@ギャビンと残り。 'debugger'コマンドを使うのが良いでしょう(少なくともそれをサポートしているブラウザでは)。実行を一時停止しますが、デベロッパーツールを使用して何が起きているかを調べることができます。アラートでは、現在の状態の視覚的なスナップショットが表示されますが、必ずしもそうではありません。 – stafffan

2

あなたがフォーカスを失いたくフィールド上blurイベントをトリガーしてください。

関連する問題