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

HTML+CSS+JavaScript

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

 

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

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

тема: динамическое добавление элементов file в форму
 
 автор: NovikovMA   (04.04.2008 в 23:06)   письмо автору
 
 

Добрый вечер.
Проблема закралась, весь мозг сломал....

Добавляю динамически JavaScript'ом элемент типа file в форму. А когда отправляю данные с формы, все отправляется, кроме этих динамически созданных элементов. Т.е. сам элемент на экране виден но сам файл на сервер не отправляется.

Причем все это не работает только в FF и Opera. По крайней мере в IE все работает.
Добавляю так:

function add_file(){
var theTable = document.getElementById('file_tbl');
var row = theTable.insertRow(theTable.rows.length);
var cell = row.insertCell(0);
var f=document.createElement('input');
f.type="file";
f.name='file_'+theTable.rows.length;
f.id='file_'+theTable.rows.length;
cell.appendChild(f);
};

Таблица file_tbl находится внутри формы.

Подскажите, в чем может быть дело?
Заранее спасибо.

   
 
 автор: NovikovMA   (05.04.2008 в 15:29)   письмо автору
 
   для: NovikovMA   (04.04.2008 в 23:06)
 

up

   
 
 автор: deman-b   (05.04.2008 в 15:55)   письмо автору
 
   для: NovikovMA   (04.04.2008 в 23:06)
 

а тип формы у тебя мультипарт фрм дата?

   
 
 автор: ddhvvn   (05.04.2008 в 16:02)   письмо автору
 
   для: deman-b   (05.04.2008 в 15:55)
 

Ну так а эти "добавленные" файлы хоть обрабатываются?

   
 
 автор: NovikovMA   (06.04.2008 в 19:51)   письмо автору
 
   для: ddhvvn   (05.04.2008 в 16:02)
 

чем обрабатываются? На сервере их не видно. И судя по скорости, они вообще на сервер не попадают %)

   
 
 автор: NovikovMA   (06.04.2008 в 19:50)   письмо автору
 
   для: deman-b   (05.04.2008 в 15:55)
 

да
<form name="order" action="new_order.php" Method="POST" enctype='multipart/form-data'>

   
 
 автор: deman-b   (05.04.2008 в 16:51)   письмо автору
 
   для: NovikovMA   (04.04.2008 в 23:06)
 

выложи исходники

   
 
 автор: NovikovMA   (06.04.2008 в 19:49)   письмо автору
 
   для: deman-b   (05.04.2008 в 16:51)
 

Сама форма очень большая, так что начало, середину и конец тока покажу.



<table border="1" width="700">
<form name="order" action="new_order.php" Method="POST" enctype='multipart/form-data'> 
  <tr>
    <td width="100%" colspan="2" align="center"><h1>Новая заявка</h1></td>
  </tr>
  <tr>
 ....
....
....
          <table border="0" id="file_tbl" cellpadding="0" cellspacing="1">
            <tr><td>
              <input type="FILE"  name="file_1" id="file_1">
            </td></tr>
          </table>
          <input type="button" name="add_file_but" id="add_file_but" OnClick="JavaScript:add_file();" value="Добавить файл">
        </td></tr>
....
....
....
 <tr>
    <td colspan="2" align="center">
      <input type="submit"  name="button2" value="&nbsp;&nbsp;&nbsp;Далее&nbsp;&nbsp;&nbsp;">
    </td>
  </tr>
</form>
</table>

Скрипт, который добавляет еще одно поле.

function add_file(){
 var theTable = document.getElementById('file_tbl');
 var row = theTable.insertRow(theTable.rows.length);
 var cell = row.insertCell(0);
 var f=document.createElement('input');
 
     f.type="file";
     f.name='file_'+theTable.rows.length;
     f.id='file_'+theTable.rows.length;
     cell.appendChild(f);
};


По умолчанию есть поле для одного файла. Он передается нормально. А все, добавленные скриптом - нет :-(

   
 
 автор: Crux   (07.04.2008 в 06:35)   письмо автору
 
   для: NovikovMA   (06.04.2008 в 19:49)
 

вынесите form за таблицу


<form name="order" action="new_order.php" Method="POST" enctype='multipart/form-data'> 
<table border="1" width="700">
....
....
</table> 
</form>

   
 
 автор: NovikovMA   (08.04.2008 в 14:37)   письмо автору
 
   для: Crux   (07.04.2008 в 06:35)
 

какая разница?
таблица file_tbl находится внутри формы. Так что вынос ни к чему не приведет. А так будет не большой, но напрягающий отступ перед таблицей в IE

   
 
 автор: Crux   (08.04.2008 в 15:00)   письмо автору
 
   для: NovikovMA   (08.04.2008 в 14:37)
 

>какая разница?
а Вы пробовали?.. разница есть и причем большая!

отступ это не проблема убирается легко с использованием стилей.

   
 
 автор: NovikovMA   (08.04.2008 в 16:17)   письмо автору
 
   для: Crux   (08.04.2008 в 15:00)
 

пипец %)
работает. Объясните, если не сложно или дайте ссылку, почему это так?

   
 
 автор: Crux   (09.04.2008 в 07:27)   письмо автору
 
   для: NovikovMA   (08.04.2008 в 16:17)
 

собственно чему Вы удивляетесь?
нарушили иерархическую структуру веб-документа, в частности структуру таблицы, вот Вам и результат.
Ваша форма повисла в воздухе и DOM-модель её не видет.

   
Rambler's Top100
вверх

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