Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передать данные в вызывающее окно 
V
    Опции темы
AXS
Дата 16.9.2009, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 26.9.2008
Где: РК

Репутация: нет
Всего: -1



Я, короче, запутался уже в методах и языках smile

У меня стоит задача - взять данные из строчки в таблице, открыть на редактирование во всплывающем окне, и после редактирования вернуть в таблицу. 
Желательно без лишних перезагрузок страниц. 

Всплывающее окно нужно потому, что данных больше чем отображается в таблице (в ней только основные).
  • Данные хранятся в БД mysql и выводятся в таблицу посредством php. Первую колонку в таблице занимают радиобатоны. 
  • Выбираем радиобатон, щёлкаем по кнопке "править" и запускается javascript который создаёт всплывающее окно и основу страницы. 
  • Потом с помощью команд ajax'a скрипт вводит начинку страницы из файла nachinka.php В этом файле на php написано то, что будет находится между <body> и </body>
  • Теперь пользователь редактирует данные, жамкает кнопу "закончить" и эти данные надо обновить в БД и в таблице. Причём таблица остаётся в том же окне откуда было вызвано всплывающее окно. 
  • И уж вообще замечательно было бы рефрешить не всю страницу, а только редактируемую строку.


До кнопки "закончить" я всё сделал, а вот как вернуть данные в то же окно - ниасилил. Поможете кто чем может? smile

PS: Может я слишком усложнил реализацию и можно проще?
PPS: Условия задачи, к сожалению, менять нельзя...
--------------------
<><><> AXS - Live Organizer v1.0  <><><> 0_o
PM MAIL WWW ICQ Skype GTalk   Вверх
diadiavova
Дата 16.9.2009, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Диалговое окно запускай методом showModalDialog. В самом окне результат редактирования надо присвоить свойству returnValue. То, что ему присвоишь  и будет значением, которое возвратит метод showModalDialog в основном документе.



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
AXS
Дата 22.9.2009, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 26.9.2008
Где: РК

Репутация: нет
Всего: -1



Цитата(diadiavova @ 16.9.2009,  23:59)
Диалговое окно запускай методом showModalDialog. В самом окне результат редактирования надо присвоить свойству returnValue. То, что ему присвоишь  и будет значением, которое возвратит метод showModalDialog в основном документе.

Сорри за некоторое отсутствие...
Попробовал showModalDialog - работает как часики, но в FireFox. А вот в опере ноль эмоций - диалоговое окно не появляется.

Скрипт 1:
Код

function editrow() {
var left, top;
left = (screen.width/2)-306;
top = (screen.height/2)-272;
var argums = 'dialogWidth:612;dialogHeight:544;dialogTop:'+top+';dialogLeft:'+left+';center:yes';
lid=document.forms[0].checkedradio.value;
document.forms[0].retval.value = window.showModalDialog('/editrowform.php?lid='+lid,'', argums);
return false;
}


Скрипт 2:
Код

function retres(){
window.returnValue = 'qwerty';
window.close();
}


Первый скрипт выполняется в основном окне и открывает диалог, второй работает в диалоге и возвращает результат в основное.

В Mozilla FireFox 3.5.1 всё ОК
В Opera 9.64 диалог не открывется.... 
IE потестить не могу ввиду отсутствия его под Linux'ом

--------------------
<><><> AXS - Live Organizer v1.0  <><><> 0_o
PM MAIL WWW ICQ Skype GTalk   Вверх
diadiavova
Дата 22.9.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



В ИЕ работает, на счёт оперы не знал. Есть альтернативный вариант, который должен сработать везде. Окошко создать в виде рамки(div например) с абсолютным или относительным позиционированием.
Что-то вроде этого. 
Код

<div style="position:absolute;display:none;"></div>

Для того, чтобы появилось надо свойству стиля display присвоить значение block. Можно устанавливать положение такого окошка при помощи свойств стиля top и left. 

Другой вариант - window.open(). Этот метод открывает новое окно и возвращает ссылку на объект window этого окна. Через эту ссылку можно получить доступ и к документу и ко всему остальному.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
AXS
Дата 25.9.2009, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 26.9.2008
Где: РК

Репутация: нет
Всего: -1



Короче, помучился и сделал такой блок на странице после всех тегов (чтобы был поверх всех других блоков):
Код

<!-- Начало скрытого дива -->
<div id="editrow" style="position:fixed;display:none;border: 2px solid #333;padding:10px;background-color:#fff;">
<input type="image" src="<?php echo $imagesdir; ?>/close.jpg" style="float:right;" onclick="document.all.editrow.style.display='none';"><br>
<div class="content-full" style="margin:0px;margin-top:8px;">

     <!-- Форма редактирования строки -->
</div>
</div>
<!-- Конец скрытого дива -->


Получился блок который ведёт себя как всплывающее окно. Показываю его скриптом:
Код

function editrow() {
var xp=(document.width-900)/2-10;
document.all.editrow.style.left=xp;
document.all.editrow.style.top="70";
document.all.editrow.style.display="block";
return false;
}


Вопрос помечаю как решённый, но хотелось бы поинтересоваться - кнопка "готово" будет вызывать скрипт на javascript, а результат в БД я заношу PHP скриптом. Получится ли выполнить php-скрипт обновляющий БД посредством jQuery?
--------------------
<><><> AXS - Live Organizer v1.0  <><><> 0_o
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.