2010-10-26 65 views
2

我有一系列DIV元素,當點擊,觸發DOMWindow打開事件的。那裏沒問題。.focus()不工作一DOMWindow()[JQuery的]

然後我不得不添加鍵盤輔助功能。 DOH !!

我加的tabindex屬性的DIV,它允許用戶使用Tab鍵從一個DIV到下了,我增加了一個按鍵處理,處理Enter鍵。那裏沒問題。

我遇到的問題是試圖將焦點設置回用戶在打開Enter鍵並打開DOMWindow時所處的div(以便它們可以繼續切換到系列中的下一個DIV) 。

我嘗試添加一個功能存在domWindow的「functionCallOnClose」設置,但似乎並沒有做任何事情。

這裏是一個代碼段。這是在點擊按鍵事件綁定到具有「timeEntry」的類名稱的所有div:

$(".timeEntry").live("click keypress", function() { 

    // bunch of code here to set up the DOMWindow... 

    $.openDOMWindow({ 

     // bunch of settings here... 

     functionCallOnClose: function() { 
      // this doesn't work 
      // 'DivId' is the object (DIV) that was clicked on 
      $(DivId).focus(); 
     } 
    }); 

}); 

有沒有人有一個線索,爲什麼我似乎無法讓焦點回到後原來的DIV點擊或按鍵事件被解僱和處理?

我意識到這是一個非常模糊的問題,所以我把它扔在那裏,希望其他人閱讀,這是使用jQuery DOMWindow和處理點擊按鍵事件(或至少知道如何)

:O)

編輯:做一些進一步的調試後,似乎有與jQuery正從DIV標籤的tabIndex屬性的問題。當我認爲我的頁面的源代碼,我可以看到的屬性:

<div id="someDiv" class="someClass" tabindex="1"> ... </div> 

然而,當我嘗試使用jQuery獲取屬性,它不會出現在那裏。

此代碼返回「未定義」

var tabindex = $("#someDiv").attr("tabindex"); 

但是,如果我設置使用jQuery的屬性,我可以轉身和檢索:

// set the tabindex 
$("#someDiv").attr("tabindex", "1"); 

// now this returns "1" 
var tabindex = $("#someDiv").attr("tabindex"); 

有沒有人有一個線索,爲什麼jQuery的沒有按在HTML中設置時返回tabindex屬性,但它會在使用代碼動態設置後返回?

希望這是有道理...

+0

調用.focus()調用是否在腳本的其他地方使用div?我注意到在.focus()文檔中,它可能不適用於舊版瀏覽器中的非表單元素,即使使用tabindex。此外,你有沒有嘗試在你的functionCallOnClose中放置一個alert,以確保它實際上正在執行? – Ender 2010-10-26 22:20:45

+0

是的,焦點()在別處工作,是的,我知道該函數正在執行,因爲我可以使用調試器進入它。奇怪的是,我似乎無法使用jQuery從div中獲取tabindex屬性。我可以在HTML源代碼中看到它,所以我知道它在那裏,但是當我嘗試訪問它時,jQuery返回「undefined」。我認爲這是我的問題的根本原因。 – camainc 2010-10-27 18:14:26

回答

相關問題