сначала извините за мой плохой английский.Теперь у меня проблема с закрытием и передачей параметров в модалбокс, надеюсь, вы, ребята, сможете мне помочь.Я работаю с 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 параметров)?Я не думаю, что передача всех параметров в функцию - это хорошая идея.Итак, все еще нужна ваша помощь.Спасибо.