如果這是重複的,我很抱歉,但我無法找到我的問題的答案。如果你知道它已經被回答的地方,請給我一個鏈接。在Chrome上獲得焦點元素模糊
我正在使用jquery將函數綁定到文本框的onblur事件。 目標是僅當焦點離開tblUserDetails
表中的文本框時觸發回發。 當文本框失去焦點時:
- 在IE中,新的焦點元素是新選定的文本框。
- 在Chrome中,文檔會聚焦在兩個文本框之間,因此
$(document.activeElement)
永遠不會指向新選擇的文本框。
這裏是我的代碼,這在IE工作,但無法在Chrome:
SaveNetworkDetails: function() {
// Trigger the blur event when one of the textboxes loses focus
$("[id$=tblUserDetails]").find('input[id*="txt"]').blur(function (e) {
// Check if the new focused element is among the textboxes
if ($(document.activeElement).parents("[id$=tblUserDetails]").length == 0) {
// Trigger postback
}
});
}
我如何才能找到在Chrome中綁定到模糊事件的函數新選定的文本?
問候,
吉爾斯
我認爲Chrome正在做正確的事情。 [HTML5規範](http://www.w3.org/TR/2011/WD-html5-20110113/editing.html#focus-management)說,將焦點分配給新元素時,首先運行「無焦點步驟「爲舊的。它們是單獨的操作,並且在新元素變爲活動狀態之前發生模糊事件。我不認爲你打算在模糊處理程序中訪問新的目標。 – Barmar
嗨巴爾馬,感謝您的有趣的鏈接。我會不同意你的意見。同樣的文檔中說:「當一個被聚焦的元素停止成爲一個可聚焦的元素,或者停止聚焦而沒有另一個元素明確地聚焦於它時,用戶代理應該同步地運行body元素的聚焦步驟,如果有一個」 。在我的情況下,另一個文本框是明確的重點,所以瀏覽器不應該專注於中間的文檔。或者至少它應該讓我訪問新的焦點文本框,作爲啓動模糊事件的文本框。 – Gilles
我沒有看到該段落如何改變聚焦步驟的步驟3(使新元素成爲聚焦元素)直到_after_步驟2(在舊元素上運行未聚焦步驟)才發生。 「同步」並不意味着「同時」。最好的情況是,當你將焦點移動到一個新的元素時,這會讓不清楚活動元素應該是什麼,而未聚焦的事件正在運行。 – Barmar