2016-05-12 203 views
3

我正在發行jQuery UI的焦點問題

無法獲得property'_focusTabbable'of未定義或空引用

我使用jQuery-UI-1.10.2.custom.js

在這裏我得到問題

if (!$.ui.dialog.overlayInstances) { 
    // Prevent use of anchors and inputs. 
    // We use a delay in case the overlay is created from an 
    // event that we're going to be cancelling. (#2804) 
    this._delay(function() { 
     // Handle .dialog().dialog("close") (#4065) 
     if ($.ui.dialog.overlayInstances) { 
      this.document.bind("focusin.dialog", function(event) { 
       if (!that._allowInteraction(event)) { 
        event.preventDefault(); 
        **$(".ui-dialog:visible:last .ui-dialog-content") 
         .data(widgetFullName)._focusTabbable();** 
       } 
      }); 
     } 
    }); 
} 
+0

這是您的代碼嗎?或者它是一些插件?或者它是jQuery UI本身? –

+0

這是一個Jquery Ui本身 –

+0

對於我的情況下的任何人,當使用widget工廠製作的jQuery.ui.dialog的自定義實現連續堆疊對話框時,我遇到了很多錯誤消息。看起來問題是在jQuery UI master中修補的,所以我做了這個快速入侵,直到我們可以更新。 https://pastebin.com/Q6ChMU84 – Marie

回答

3

當你打開一個對話框,然後這個錯誤出現的時候,我在此對話框的操作按鈕中,調用打開第二個對話框的方法。當您嘗試關閉第二個對話框時,會出現該錯誤。

爲防止發生這種情況,請立即關閉第一個對話框,然後調用第二個對話框。

$('#dialog1').dialog({ 

    buttons: { 
     'No': function() { 
      $(this).dialog('close') 
     }, 

     'Yes': function() { 

      // This works 
      $(this).dialog('close'); 

      // Open second dialog 
      OpenSecondDialog() 

      // This doesn't work. A bug will arise when attempting to close the second dialog 
      $(this).dialog('close'); 

     } 
    } 
}); 
+0

你救了我的命! :d – joaorodr84

0

只是供將來參考(以及萬一別人的經驗這個問題),我在jQuery UI的1.10.3得到了同樣的錯誤在asp.net部分回發後重新打開一個對話框時。我發現這是由於變量$.ui.dialog.overlayInstances,應該在對話框關閉前計算爲1。由於每次打開對話框,變量都會增加1,當用戶按下關閉按鈕時,我的值經常評估爲2或更多。我的解決方案是每次打開對話框時將$.ui.dialog.overlayInstances重置爲1。所以:

$("#myDiv").dialog("open"); 
$.ui.dialog.overlayInstances = 1; 
0

我打開一個對話框,然後另一個確認在第一個對話框中完成的更改。在確認它沒有關閉已打開的第一個對話框時。所以我只是摧毀一切,擺脫焦點問題。

$(".ui-dialog-content").dialog('destroy'); 

我只是把這個在最後一個對話框的確認功能,因此它破壞我的所有對話框(因爲它們具有相同的類)。