2011-10-31 104 views
33

我有一個jquery ui對話框,帶有動態加載的標籤/帶有內容的JSON。由於複雜性,我無法發佈小提琴或相關代碼(代碼太多)。以編程方式移除焦點?

發生什麼事是,當對話框打開時,您可以選中對話框中的元素,直到第一個選項卡。之後,你無法通過其他任何地方。焦點鎖定在該選項卡上,即使您在其他位置單擊,該焦點也會鎖定在該選項卡上。

我無法找到此問題的實際原因。

那麼,我將如何以編程方式刪除焦點?

+0

你使用什麼瀏覽器?在IE中,你有時會因爲沒有理由而失去焦點。 – Hossein

+0

TAB的按鍵事件是否被覆蓋以手動管理焦點切換(如顯示模式對話框時可能會這樣做)? –

+0

我看到一個按鍵事件的唯一地方是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

警報不是正確的調試方式,尤其是對鼠標移動,懸停或類似事件有反應時。現在幾乎所有瀏覽器都有一個調試控制檯,您可以使用'console.log(...);' – ThiefMaster

+6

來寫入調試控制檯。調試的正確方法是幫助您以最有效的方式跟蹤錯誤。警報在調試中具有非常有用的作用,因爲它們暫停執行。就在昨天,我正在調試一個令人毛骨悚然的jQuery動畫,'console.log()'沒有用於查明這個視覺故障來自哪裏,因爲它發生得太快了。添加警報會在每個步驟中暫停動畫,並讓我準確找到毛刺來自哪裏。你說得對,OPs方法不是正確的方法,在那個例子中'console.log()'更好,但'alert()'在調試中有一席之地。 – Gavin

+1

@Gavin和其他人。最好使用'debugger'命令(至少在支持它的瀏覽器中)。它暫停執行,但仍然可以使用開發人員工具來檢查發生了什麼。有了警報,你所得到的只是當前狀態的視覺快照,這並不總是有幫助的。 – stafffan

2

嘗試觸發你不想失去重點領域的blur事件。

相關問題