Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: динамическое добавление файлов в форму
 
 автор: Dizels   (22.07.2008 в 14:40)   письмо автору
 
 

Собственно, нужно сделать динамическое добавление файлов в форму. По поиску наткнулся на тему: http://softtime.ru/forum/read.php?id_forum=4&id_theme=51760 вот мне нужно как раз такое.
Попробовал взять тот код, который там есть, но видимо не все данные в нем есть.
Вообщем прошу поделиться таким кодом, наверняка у многих вставала такая же задача.

   
 
 автор: PAT   (22.07.2008 в 15:03)   письмо автору
 
   для: Dizels   (22.07.2008 в 14:40)
 

см. http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=48640 сообщение CNT (23.01.2008 в 13:11)
Замените в коде две строки:
if (!IE) tagINPUT.name = 'txt' + ++Num; 
на 
if (!IE) tagINPUT.name = 'txt' + ++Num; tagINPUT.type = 'file';

и
<input name="txt0">
на
<input name="txt0" type="file">

и будет вам Щастье

   
 
 автор: Dizels   (22.07.2008 в 15:51)   письмо автору
 
   для: PAT   (22.07.2008 в 15:03)
 

Огромнейшее спасибо

   
 
 автор: Dizels   (23.07.2008 в 10:31)   письмо автору
 
   для: Dizels   (22.07.2008 в 15:51)
 

Все просто супер, но хотелось бы немного разобраться в том, как собственно работает данный скрипт.
К примеру, каким образом он понимает, что нужно динамически добавлять форму загрузки файла? Просто я попробовал рядом добавить обычную текстовую форму и она добавилась всего 1 раз.

   
 
 автор: Dizels   (23.07.2008 в 10:35)   письмо автору
 
   для: Dizels   (23.07.2008 в 10:31)
 

Наверное даже правильнее сказать, что я не могу понять, как добавить еще поля, чтобы они точно так же динамически подгружались. Если я правильно понял, то сейчас скрипт просто как видит форму с типом "file" - то ее и добавляет.
Так вот как добавить еще форму типа текст?
Попробовал вот так:

if (!IE) tagINPUT.name = 'txt' + ++Num; tagINPUT.type = 'file'; tagINPUT.type = 'text';

Но стала добавляться только текстовая форма.

   
 
 автор: PAT   (23.07.2008 в 14:08)   письмо автору
 
   для: Dizels   (23.07.2008 в 10:35)
 

Принцип простой:
1. Создается нужный тег - методом createElement ():
var elem = document.createElement ('название_тега');
При этом надо понимать, что этот метод создаёт элемент не на странице непосредственно, а как бы в оперативной памяти браузера.

2. Прописываются нужные вам атрибуты и параметры стиля, например:
elem.id = 'чего-то';
elem.language = 'eng';
elem.value = 'значение';
elem.type = 'button';
elem.style.color = 'red';
и так далее
При этом надо помнить, что атрибут NAME для элементов формы в браузере MSIE не может быть назначен вышеуказанным способом. Именно для MSIE необходимо прописать этот атрибут прямо в методе createElement (), а для прочих браузеров - надо назначать так, как и, например, назначается id в примере выше.

3. После всех этих "назначений" сформированный элемент надо "приживить" вовнутрь какого-то объекта методом appendChild (). При этом надо помнить, что "приживление" идет в самый конец объекта - после всех уже существующих элементов этого объекта. Например, document.body.appendChild (element); поместит новый элемент перед тегом </BODY>, а document.forms.имя_формы.appendChild (element); поместит новый элемент вовнутрь формы с именем NAME="имя_формы" перед тегом </FORM>.


Скрипт, который вы пользуете, создает (и удаляет) элементы одного типа.
Если вам нужно внутри одной формы создать несколько РАЗНЫХ ПО ТИПУ элементов, то и кнопочек "Добавить/Удалить" у вас тоже должно быть несколько ("Добавить <INPUT TYPE="FILE">", "Добавить <INPUT TYPE="TEXT">", "Добавить <TEXTAREA>", "Удалить...", ...) и, соответственно, для каждого из типов вам нужна будет отдельная функция, коя будет создавать конкретный тип элемента и следить за назначением конкретного имени для атрибута NAME для каждого элемента (чтобы знать потом - что именно удалить...)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования