Закрытие Jquery Modalbox: возможно ли сохранить значение по умолчанию для входов в modalbox при закрытии его без перезагрузки родительской страницы? - PullRequest
1 голос
/ 02 июня 2011

сначала извините за мой плохой английский.Теперь у меня проблема с закрытием и передачей параметров в модалбокс, надеюсь, вы, ребята, сможете мне помочь.Я работаю с Zend Framework.У меня есть страница индекса (действие) и гиперссылка внутри нее для вызова модального окна (с использованием ajax).

    <a class="button white"  href="javascript:void(0)" 
onclick="openPopup(<?php echo $group->getId() ?>,'<?php echo $this->baseUrl('admin/group/edit-box')?>')">
        Open Popup
    </a>

У меня есть тег div для отображения результата из функции openPopup выше на странице индекса тоже

<form id="newEditForm" name="newEditForm" method="post" action="<?php echo $this->baseUrl('admin/group/edit-box')?>" enctype="multipart/form-data">
<div id="editBoxDiv"></div>
</form>

Это функция openPopup:

 function openPopup(id, url){
        $.ajax({
            type: "POST",
            url: url,
            data: "id="+id,
            success: function(result) {
                    $("#editBoxDiv").html(result);
                    $( "#dialog-modal-edit" ).dialog({
                      bgiframe: true,
                      autoOpen: false,
                      width: 990,
                      hide: 'blind',
                      height: 620,
                      modal: true,
                      draggable: true,
                      resizable: true,
                      close : function(){

                      }

                });

                    $("#dialog-modal-edit" ).dialog('open');
            }
          });
    }

Это edit-box.phtml

<script type="text/javascript">
setRoleText = function(name){

    $('#editTextboxes :input[id=role]').val(name.value);
}
</script>
    <div id="dialog-modal-edit" title="Edit group" style="display: none;">
    <div id="editTextboxes">
                            <label class="form-label required">Group name</label>
                            <input id="name" class="form-field width60" name="name" type="text" value="<?php echo $group->getName() ?>" maxlength="100" onkeyup="setRoleText(this)"/>

                            <label class="form-label required">Group Role</label>
                            <input id="role" class="form-field width60" name="role" type="text" value="<?php echo $group->getRole() ?>" maxlength="100"/>
                        </div>
    </div>

Проблема в том, что когда я открываю модалбокс в первый раз,каждая буква, которую я набрал в [input: name], будет установлена ​​для [input: role] через функцию setRoleText, пока она работает хорошо.Но когда я закрываю modalbox и открываю его снова, значения текстовых полей не корректируются, как они должны быть (я имею в виду значение, переданное из действия edit-box), но они являются значениями, которые я набрал в первый разЯ открываю модалбокс.

Я пытался уничтожить модалбокс перед его повторной инициализацией при вызове ajax

$("#dialog-modal-edit" ).dialog('destroy');
$("#dialog-modal-edit" ).dialog({
    //init code here
});

, но ничего не работает.

Поэтому я решил изменитьautoOpen модального поля имеет значение true, и вот после этого изменилась функция openPopup:

function openPopup(id, url){

    $.ajax({
        type: "POST",
        url: url,
        data: "id="+id,
        success: function(result) {
                $("#editBoxDiv").html(result);
                $( "#dialog-modal-edit" ).dialog({
                  bgiframe: true,
                  autoOpen: true,
                  width: 990,
                  hide: 'blind',
                  height: 620,
                  modal: true,
                  draggable: true,
                  resizable: true,
                  close : function(){

                  }

            });

        }
      });
}

Тогда значения текстовых полей теперь верны, как и должно быть.Но функция setRoleText работает только при первом открытии модального окна.Во второй раз функция setRoleText не работает и продолжается 3-го, 4-го ... Любая идея с этим ???Спасибо за прочтение.С уважением.

ОБНОВЛЕНИЕ:

Я только что нашел один способ решения этой проблемы, но проблема все еще существует.

function openPopup(id, url, name, role){
        $.ajax({
            type: "POST",
            url: url,
            data: "id="+id,
            success: function(result) {
                    $("#editBoxDiv").html(result);
                    $( "#dialog-modal-edit" ).dialog({
                      bgiframe: true,
                      autoOpen: false,
                      width: 990,
                      hide: 'blind',
                      height: 620,
                      modal: true,
                      draggable: true,
                      resizable: true,
                      close : function(){

                      }

                });
$('#editTextboxes :input[name=name]').val(name);
            $('#editTextboxes :input[name=role]').val(role);
                    $("#dialog-modal-edit" ).dialog('open');
            }
          });
    }

КакВы можете видеть, я передал еще два параметра в функцию openPopup, и это сработало.Но как быть, если есть более 2 параметров (например, 10 параметров)?Я не думаю, что передача всех параметров в функцию - это хорошая идея.Итак, все еще нужна ваша помощь.Спасибо.

1 Ответ

1 голос
/ 03 июня 2011

Да, наконец-то я нашел способ решить мою проблему. Надеюсь, что это будет полезно для кого-то нужно.

Просто так просто:

function openPopup(id, url){

    $.ajax({
        type: "POST",
        url: url,
        data: "id="+id,
        success: function(result) {
            $("#editBoxDiv").html(result);

                $( "#dialog-modal-edit" ).dialog({
                  bgiframe: true,
                  autoOpen: true,
                  width: 990,
                  hide: 'blind',
                  show: 'blind',
                  height: 620,
                  modal: true,
                  draggable: true,
                  resizable: true,
                  ***close : function(){
                    $(this).remove();
                  }***
                });


        }
      });
}

Когда закройте модалбокс, просто удалите его, и все в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...