2014-01-09 28 views
6

我試圖從用戶切換桌面上的標籤時(jQuery Mobile)文本輸入中刪除焦點。儘管我可以在下面的控制檯中正確識別activeElement,但我無法編輯其任何屬性或刪除其焦點。如何在更改制表符時從activeElement中移除焦點(onfocus/onblur)?

這是我在做什麼:

// inside some init method   

window.onfocus = function() { 
    // triggers 
    console.log(document.activeElement); 
    if (document.activeElement.tagName !== "BODY") { 
    console.log("clear focus"); 
    document.activeElement.blur(); 
    document.activeElement.className = "FOOBAR"; 
    } 
}; 

當我在窗體上和焦點的文本輸入,然後切換到另一個選項卡,並返回到標籤與形式,事件監聽器觸發器和我仍然有效的輸入被正確記錄。但是,就是這樣......我無法模糊或編輯任何元素屬性。

問題
如何正確地從有源元件無論是在window.onfocuswindow.onblur移除焦點?

謝謝!

PS:它也不會用jQuery工作:

$(window).on("focus", function() { 
    $(document.activeElement).blur(); 
}); 

和我在尋找一個只有JavaScript解決方案。

編輯
document.activeElement.blur()工作正常,從控制檯,而不是從我的聽衆。

+0

您是否嘗試將焦點更改爲另一個元素,例如:該文件? –

+0

是。我剛剛解決了它。等一下,我發佈。 – frequent

回答

6

好的。這工作:

window.onblur = function() { 
     document.activeElement.blur(); 
    }; 

看上去是如此的模糊工作得很好,因爲如果我以後我呼籲blur()它從輸入切換到BODY標籤和前安慰activeElemnt。正確地說,我的身體已將其課程設置爲FOOBAR。問題在於文本元素仍然保留焦點,但我認爲這是由於jQuery Mobile內部的一些處理程序。

上述解決方案反過來工作。當用戶切換選項卡時,我刪除了activeElement的焦點。作品。

+0

爲我工作!良好的解決方法! – bichotll