2016-05-12 13 views
3

Ich erhalte AusgabejQuery UI-Fokus Ausgabe

nicht in der Lage property'_focusTabbable'of undefined oder null Referenz

Ich benutze JQuery-ui-1.10.2.custom.js

zu erhalten

Hier ist Problem bin immer in

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

Ist dies Ihr Code? oder ist es ein Plugin? oder ist es jquery UI selbst? –

+0

Es ist ein Jquery Ui selbst –

+0

Für jeden in meiner Situation, lief ich in diese Fehlermeldung eine Menge beim Stapeln von Dialogen ein paar Mal in Folge mit einer benutzerdefinierten Implementierung von jQuery.ui.dialog mit der Widget-Fabrik gemacht. Es sieht so aus, als wäre das Problem in jQuery UI Master gepatcht worden, also habe ich diesen schnellen Hack gemacht, bis wir ihn aktualisieren können. https://pastebin.com/Q6ChMU84 – Marie

Antwort

3

Dieser Fehler tritt auf, wenn Sie einen Dialog öffnen und dann, i n Rufen Sie über eine Aktionsschaltfläche dieses Dialogfelds eine Methode auf, die einen zweiten Dialog öffnet. Wenn Sie versuchen, den zweiten Dialog zu schließen, wird der Fehler angezeigt.

Um dies zu verhindern, schließen Sie das erste Dialogfeld sofort und rufen Sie dann das zweite Dialogfeld auf.

$('#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

Sie haben mein Leben gerettet! : D – joaorodr84

0

Gerade für die Zukunft (und im Falle jemand Erfahrungen dieses Problem), habe ich die gleichen Fehler in jQuery UI 1.10.3, wenn ein Dialog nach einer partiellen Postbacks in asp.net wieder zu öffnen. Ich fand heraus, dass dies auf eine Variable $.ui.dialog.overlayInstances zurückzuführen war, die vor dem Schließen des Dialogs auf 1 ausgewertet werden soll. Da bei jedem Öffnen des Dialogs die Variable um 1 erhöht wird, hat der Benutzer beim Drücken der Schließen-Schaltfläche den Wert oft auf 2 oder mehr gesetzt. Meine Lösung war, jedes Mal, wenn ich den Dialog öffnete, $.ui.dialog.overlayInstances auf 1 zurückzusetzen. Also:

0

Ich öffne einen Dialog und dann noch einen, um Änderungen zu bestätigen, die im ersten Dialog gemacht wurden. Bei der Bestätigung wird der erste Dialog, der geöffnet wurde, nicht geschlossen. Also zerstöre ich einfach alles, um das Fokusproblem loszuwerden.

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

Ich habe nur diese eine in der Bestätigungsfunktion des letzten Dialog, so dass es alle meine Dialoge zerstört (da sie die gleiche Klasse haben).