|
|
|
| Собственно, нужно сделать динамическое добавление файлов в форму. По поиску наткнулся на тему: http://softtime.ru/forum/read.php?id_forum=4&id_theme=51760 вот мне нужно как раз такое.
Попробовал взять тот код, который там есть, но видимо не все данные в нем есть.
Вообщем прошу поделиться таким кодом, наверняка у многих вставала такая же задача. | |
|
|
|
|
|
|
|
для: 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">
|
и будет вам Щастье | |
|
|
|
|
|
|
|
для: PAT
(22.07.2008 в 15:03)
| | Огромнейшее спасибо | |
|
|
|
|
|
|
|
для: Dizels
(22.07.2008 в 15:51)
| | Все просто супер, но хотелось бы немного разобраться в том, как собственно работает данный скрипт.
К примеру, каким образом он понимает, что нужно динамически добавлять форму загрузки файла? Просто я попробовал рядом добавить обычную текстовую форму и она добавилась всего 1 раз. | |
|
|
|
|
|
|
|
для: Dizels
(23.07.2008 в 10:31)
| | Наверное даже правильнее сказать, что я не могу понять, как добавить еще поля, чтобы они точно так же динамически подгружались. Если я правильно понял, то сейчас скрипт просто как видит форму с типом "file" - то ее и добавляет.
Так вот как добавить еще форму типа текст?
Попробовал вот так:
if (!IE) tagINPUT.name = 'txt' + ++Num; tagINPUT.type = 'file'; tagINPUT.type = 'text';
|
Но стала добавляться только текстовая форма. | |
|
|
|
|
|
|
|
для: 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 для каждого элемента (чтобы знать потом - что именно удалить...) | |
|
|
|