2013-04-07 3 views
2

Мне нужно отобразить таблицу записей, где в каждой строке есть якорный тег, на который открывается диалоговое окно Jquery. Когда я нажимаю на ссылку каждой строки, диалоговое болото открывается успешно (в настоящее время у меня есть две строки и жестко закодированы идентификаторы привязки и теги div, которые мне нужны, чтобы сделать их динамическими). В любом случае, как только откроется диалог, у меня есть возможность снять флажки и установить флажки, и я делаю некоторые обновления. Обновления должны отражаться на родительском окне, которое происходит нормально. Однако, когда я снова открываю диалоговое окно, он открывается исходными данными перед тем, как делать обновления, вместо того, чтобы отображать диалоговое окно с обновленными обновлениями. Кроме того, он начал выдавать сообщения об ошибках, говорящие: «Невозможно вызвать методы в диалоговом окне до инициализации; метод вызова «закрыть» «Обновление содержимого диалогового окна JQuery + JSF

$("#vendoradmin-artnodesearch-popup-0").dialog(opt).dialog("open");}); 

$("#vendoradmin-artnodesearch-popup-0").dialog(
       { 
       autoOpen : false, 
       modal : false, 
       resizable : false, 
       height : 500, 
       width : 750, 
       buttons : [{ 
       text: "Submit", 
       click : function() { 
        var selNodes = ""; 
        $('#artNodeAvailListId-0 input:checkbox:checked').each(
        function() { 
         selNodes += $(this).val() + ","; 
         }); 


        $("#frmAssignArticleHierarchy\\:hdnArticleNodeIds").attr("value", 
        selNodes); 
        frmAssignArticleHierarchy["frmAssignArticleHierarchy:btnRefreshArticleFilter"] 
       .click(); 

        $(this).dialog("close"); 
       } 
      }] 
     }); 
     }; 

Любая помощь по этому вопросу будет высоко оценена.

+0

Вы пробовали диалог («уничтожить»); Ознакомьтесь с документами: http://api.jqueryui.com/dialog/ – Daniel

+0

Я попытался позвонить $ (this) .dialog («destroy»); перед закрытием диалога. Кажется, он не работает. Кроме того, добавлено close: function (ev, ui) { \t предупреждение ('in close'); \t $ (this) .dialog ("destroy"); }, когда я открываю второй раз после обновления диалогового окна, само диалоговое окно не открывается и отображает сообщение об ошибке «не может вызывать методы в диалоговом окне до инициализации, попытался вызвать метод« закрыть »« – user2253556

+0

Я помню создание div на летать с jquery. После закрытия я использовал уничтожить и удалить. ' $ (" # dialogwrapper "). Dialog (" destroy "); $ ("# dialogwrapper"). Remove(); ' Я не вижу ситуацию, в которой вы находитесь, но попробуйте. – Daniel

ответ

0

Проблема заключается в том, что при закрытии диалогового окна на самом деле он не удаляет данные в диалоговом окне, поэтому, когда он будет отображаться снова, он покажет существующие данные, поэтому вам нужно добавить параметр закрытия, который удаляет #vendoradmin-artnodesearch-popup-0, просто проверьте api диалогового окна jquery, и вы можете найти код для этого.

$("#vendoradmin-artnodesearch-popup-0").dialog(
       { 
       autoOpen : false, 
       modal : false, 
       resizable : false, 
       height : 500, 
       width : 750, 
close: function(){//add code to remove the data in vendoradmin-artnodesearch-popup-0} 
       buttons : [{ 
       text: "Submit", 

       click : function() { 
        var selNodes = ""; 
        $('#artNodeAvailListId-0 input:checkbox:checked').each(
        function() { 
         selNodes += $(this).val() + ","; 
         }); 


        $("#frmAssignArticleHierarchy\\:hdnArticleNodeIds").attr("value", 
        selNodes); 
        frmAssignArticleHierarchy["frmAssignArticleHierarchy:btnRefreshArticleFilter"] 
       .click(); 

        $(this).dialog("close"); 
       } 
      }] 
     }); 
     }; 
+0

спасибо за ответ. Однако это не работает. Close: function (ev, ui) {alert ('inside close'); $ (Это) .dialog ("уничтожить"); } – user2253556

+0

нет это. Вы должны удалить содержимое в vendoradmin-artnodesearch-popup-0, а не просто уничтожить его. – OQJF

0

Is $ ("# vendoradmin-artnodesearch-всплывающее окно-0") элемент, который вы создаете на лету? Вы инкапсулировали свои идентификаторы диалогового окна. Можете ли вы использовать .ui-диалог как предыдущий селектор? Уникальны ли эти идентификаторы?

click: function() { 
    var selNodes = ""; 
    $('.ui-dialog #artNodeAvailListId-0 input:checkbox:checked').each(

    function() { 
     selNodes += $(this).val() + ","; 
    }); 


    $("#frmAssignArticleHierarchy\\:hdnArticleNodeIds").attr("value", 
    selNodes); 


    $(this).dialog("close"); 

Как-то я думаю, что у вас могут быть конфликтующие идентификаторы.

+0

Я использовал следующее, чтобы получить этот рабочий файл $ ('# vendorDtl'). On ('click', 'a.className', function() { var opt = {autoOpen: false, modal: false, resizable: false , \t \t высота: 500, ширина: 750, кнопки: {\t "Отправить": функция() { \t \t //.....app конкретный код \t $ (это) .dialog ("закрыть") \t}}} $ ("# popup -" + rowNumber) .dialog (opt) .dialog ("open");}); Я смог разрешить «Ошибка при вызове метода open перед инициализацией диалога», а также путем идентификации тэга привязки, который был динамически создан и нажат. – user2253556

Смежные вопросы