2016-05-12 202 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'); 

我只是把这个在最后一个对话框的确认功能,因此它破坏我的所有对话框(因为它们具有相同的类)。