2016-05-12 3 views
3

Я получаю IssueJQuery UI Фокус Issue

смог 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? –

+0

Это JQuery Ui сам –

+0

Для всех, кто в моей ситуации, я столкнулся с этим сообщением об ошибке много раз, когда несколько раз подряд делал диалоговые окна, используя пользовательскую реализацию jQuery.ui.dialog, выполненную с помощью фабрики виджета. Похоже, что проблема была исправлена ​​в jQuery UI master, поэтому я сделал этот быстрый взлом, пока мы не сможем обновить его. https://pastebin.com/Q6ChMU84 – Marie

ответ

3

возникает Эта ошибка при открытии диалогового окна, а затем, я n кнопка действия этого диалога, вызовите метод, который открывает второе диалоговое окно. Когда вы пытаетесь закрыть второе диалоговое окно, появляется ошибка.

Чтобы этого не произошло, немедленно закройте первое диалоговое окно, а затем вызовите второй диалог.

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

Я просто поставил эту в функции подтверждающей последнего диалога, так что разрушает все мои диалоги (так как они имеют один и тот же класс).