|
|
|
|
|
для: elenaki
(07.01.2010 в 17:05)
| | хи-хи. я умудрилась в очередной раз сломать (как объяснить клиентам-ламерам, что если что-то работает, это не надо трогать, чтоб не сломать?) работающий в обоих браузерах скрипт. :)
клиенту захотелось, чтоб по кнопке [-] самая первая таблица с полями ввода фотки не пропадала. а по кнопке плюс добавлялись бы другие таблицы.
пришлось убрать минус из основной таблицы. а в дополнительных рисовать только минус. вот, что получилось. специально тут оставляю код, чтоб найти потом при случае. исходные данные: очень большая (динамически строящаяся форма), содержащая в себе таблицу из нескольких столбцов. ближе к концу формы расположена таблица с полями для ввода файла и двумя текстовыми полями. задача: добавлять сколько угодно таких таблиц с возможностью удаления и корректная обработка в IE и FF.
вот кусок формы:
<fieldset class="text" style="width: 355px;">
<legend>Фотографии</legend>
<table width="100%" align="center" cellspacing="1" class="text" border="0">
<tr>
<td valign="middle" style="border-bottom: #999 1px solid;">Фотография
<input type=file name="att[]" size=27 style="border: 1px #999 solid; background: #fff;">
порядок <input type="Text" name="ord[]" value="0" style="width: 25px;">
название <input type="Text" name="tit[]" value="" style="width: 156px;">
<span>
</td></tr>
</table>
<div align="right"> <input type="button" value="" onclick="addFile(this);" style="background: url('images/plus.gif') no-repeat; border: none; width: 12px; height: 12px; cursor: pointer;"></div>
</fieldset>
|
а вот скрипт добавления:
<script language='JavaScript1.1' type='text/javascript'>
var clk = 0
function dropFile(btn)
{
if(document.getElementById)
{
while (btn.tagName != 'TR') btn = btn.parentNode;
btn.parentNode.removeChild(btn);
}
}
function addFile(btn)
{
clk++;
btn = btn.parentNode;
var newElem=document.createElement("table");//создаём новый элемент страницы (TABLE)
newElem.border=1;//указывает толщину рамки таблицы
newElem.width = 350;
newElem.Cellspacing = 0
newElem.Cellpadding = 0
var newRow=newElem.insertRow(0);//добавляем строку в созданной таблице
var newCell = newRow.insertCell(0);//в созданной строке добавляем столбец
//newCell.width="200";//указываем длину столбца равной 200 пикселей
newCell.align="left";//указываем позиционирование по центру
newCell.innerHTML='Фотография <input type=file name="att['+clk+']" size=27 style="border: 1px #999 solid; background: #fff;"><br>порядок <input type="Text" name="ord['+clk+']" value="0" style="width: 25px;"> название <input type="Text" name="tit['+clk+']" value="" style="width: 156px;"> <input type="button" name="drop" value="" onclick="dropFile(this);" style="background: url(\'images/minus.gif\') no-repeat; width: 12px; height: 12px; border: #000 1px solid;">';
btn.parentNode.appendChild(newElem);//прописываем созданную таблицу на страницу
return
}
</script>
|
в главной таблице оставлен только плюс, удалить ее нельзя. в добавляемых таблицах - только минусы, их можно удалить. | |
|
|
|
|
|
|
|
для: Boeing
(05.01.2010 в 23:28)
| | не работает, если поля типа файл расположены во втором столбце таблицы - т.к. форма большая, пришлось ее делить на столбцы...
перенесла эти динамически добавляемые поля в первый столбец и заработало! | |
|
|
|
|
|
|
|
для: elenaki
(06.01.2010 в 12:40)
| | установите firebug и нажмите F12 =)
и после нажатий кнопки смотрите, добавляются ли поля, как они добавляются. и проверяйте есть ли ошибки. | |
|
|
|
|
|
|
|
для: ddhvvn
(05.01.2010 в 18:54)
| | понятия не имею, как это смотреть...
дело не в браузере. и не в переадресации. простой тестовый скрипт работает. мой, сложный, в котором еще куча других скриптов - нет. наверно, происходит конфликт с другими скриптами. | |
|
|
|
|
|
|
|
для: elenaki
(05.01.2010 в 12:13)
| | у меня этот код работает: массив заполняется соответственно выбранным файлам. Значит дело в самом ФФ. Вы не пробовали обновиить его? | |
|
|
|
|
|
|
|
для: elenaki
(05.01.2010 в 16:22)
| | ну значит она - виновница этого )))
эта переадресация ведь происходит после обработки файлов?
вы, кстати, так и не ответили - смотрели ли Вы как создаются новые поля? | |
|
|
|
|
|
|
|
для: ddhvvn
(05.01.2010 в 15:46)
| | переадресация ни при чем. просто это единственное отличие в тестовом скрипте и моем. проблема в том, что скрипту-обработчику не передается массив, созданный через динамически добавленные поля. | |
|
|
|
|
|
|
|
для: elenaki
(05.01.2010 в 13:34)
| | так стоп. а что вообще за переадресация? зачем она Вам? | |
|
|
|
|
|
|
|
для: ddhvvn
(05.01.2010 в 12:35)
| | убрала. сделала переадресацию на нужную мне страницу. переадресацию делает, т.е. массив POST имеется. а вместо массива FILES видит только одно значение, динамически добавленные замечать не желает. | |
|
|
|
|
|
|
|
для: elenaki
(05.01.2010 в 12:13)
| | что-то Вы, видимо, запутались. да и я немного )
последняя перезагрузка нужно, вероятно, чтобы при обновлении страницы, файлы не отправились заново | |
|
|
|
|