| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Открыть окно для создания формы |
| Автор: Arisha 28.5.2004, 03:56 |
| Доброго времени суток всем! Нужно сделать такое: при нажатии на ссылку открывается javascript окно, где выведена форма для редактирования ссылки. Передать из той формы надо все в некий php- файл или в тот же PHP_SELF, где будет использоваться полученная переменая. Подкиньте идейку как осуществить. Попытки производятся, но пока :error on page: |
| Автор: Sardar 27.5.2004, 23:31 |
| Что за Error? По идее ловим событие onClick якорей, открываем окошко, все изменения пишем в массив. Пользователь закончил с редактированием, жмет кнопку "Сохранить" и скрипт отсылает массив в невидимой форме POST'ом на сервер. Там ты получишь массив, делай с ним все что захочешь. Скажи где не ясно. Опиши точнее задачу. Если не получится, то помогу с кодом. |
| Автор: Captain Blood 28.5.2004, 04:36 |
| Создать окно можно таким способом, как показано ниже. При нажатии на ссылку откроется окно с заданными размерами и в него загрузится файл email.html. В этом файле уже имеется требуемая форма для редактирования ссылки и отправки ее на сервер. <html> <head> <script language="JavaScript"> function newWindow() { window.open("email.html", "win", "width=400, height=300, status=0, menubar=0, location=0 resizable=0 directories=0 toolbar=0") } </script> </head> <body> <a href="javascript:newWindow()">Открыть в новом окне</a> </body> </html> |
| Автор: Arisha 28.5.2004, 11:13 |
| Здравствуйте! С окном вроде бы вчера разобралась. Но появилась идея сделать через prompt - при нажатии на конкретную ссылку выскочит prompt, туда пользователь введет новое значение ссылки, а я его запомню в БД. Только вот как обратиться к этой переменной потом в php? |
| Автор: Captain Blood 28.5.2004, 11:37 |
| Наверное проще присваивать значение Prompt скрытому полю формы и отправлять ее на сервер. Программа на php уже анализирует значения и делает с ними, что тебе надо. Примерно так. <script> link = prompt("Введите ссылку",""); document.forms["formLink"].hiddenField.value = link; </script> ... <form name=formLink> <input type=hidden name=hiddenField> Скрипт лучше оформить в виде функции и вызывать ее при необходимости. |
| Автор: Captain Blood 28.5.2004, 11:42 |
| Подумалось, что можно сделать еще вот так. <script> function Link(f) { link = prompt("Введите ссылку",""); f.hiddenField.value = link; // присваиваем введенное значение скрытому полю f.submit(); // отправляем форму на сервер } </script> ... <form name=formLink action="имя скрипта на php"> <input type=hidden name=hiddenField> f в данном случае ссылка на форму. Если к функции обращаться из нее, то вызов будет Link(this.form), если из Submit, то вызов - Link(this). |
| Автор: Arisha 28.5.2004, 13:00 | ||
| Captain Blood, спасибо за помощь!! Сейчас попробую это сделать. И примерно:
примерно так? |
| Автор: Arisha 28.5.2004, 13:13 |
| [code] <script language="javascript"> function Link(f) { link=prompt("Input new value",""); f.hiddenField.value=link; f.submit(); } </script> <form name="formLink" action="<?=$_SERVER['PHP_SELF']?>" method="post"> <input type="hidden" name="hiddenField"> <a href="<?=$_SERVER[PHP_SELF]?>" onClick="Link(this.form)">aaa</a> </form> <?php echo $_POST['hiddenField']; ?> хммм, не выводит hiddenField |
| Автор: Arisha 28.5.2004, 20:38 |
| Наконец-то сделала,уф. Допустим, у меня есть несколько ссылок. При нажатии на каждую выскакивает окно, туда вписывается новое значение, а потом запоминается в БД. Все ок. А если у меня рядов так 10 выводятся из БД в цикле, в каждом из них расположено по 3 ссылки, например:
Чтобы узнать у кого - Пети или Юры изменить телефон на полученное значение, надо знать его имя. Как это сделать? Если передавать полем hidden, например, значение (Вася,Петя,...,Юра), то передается лишь последнее. Если же прямо в цикле передавать текущее значение имени в массив, то не знаю, как потом обращаться к элементу массива - ведь неизвестно, сколько записей всего и на какую по счету запись нажали... |
| Автор: Arisha 28.5.2004, 20:57 | ||
| Sardar, ты писал, что можешь с кодом помочь, если там что неверно. Если твое желание еще не пропало, то посмотри, пожалуйста, предыдущий пост и вот код:
|
| Автор: Sardar 29.5.2004, 01:48 | ||||
Мне не понравилось что мы при любом изменении сразу же отправляем форму на сервер. Попробуем улучшить скрипт:
Код на скорую руку, но проверил, он работает. Работает везде кроме Opera, так как она криво работает с аттрибутами html элементов - мне не удалось достать name(идентификатор записи). На северре получаем массив $_POST['usr_data'], в котором лежат имя_tr=>значения|полей|через_вертикальную черту. Простейший код покажет все:
|
| Автор: Arisha 31.5.2004, 11:47 |
| Огромное спасибо, Sardar! Так действительно лучше. Буду разбираться. |
| Автор: Sardar 31.5.2004, 23:15 |
| Немного запутанно написал... Содержимое ячеек доставал через childNodes[0-2].firstChild.nodeValue, т.е. в первых трех ячейках таблицы(DOM). Если что то не понятно, то спрашивай. Тема интересная, продумай логику скрипта, без поблажек, а так что бы действительно удобно было. А мы поможем превратить идею в код |
| Автор: Arisha 2.6.2004, 15:14 |
| Хорошо, спасибо. Я буду стараться. |