Morbid
Новичок
проблема с загрузкой файлов из динамической формы
я написал небольшой класс для генерации форм по заданным параметрам, в нем я поставил форму с javascript'ом который создает дополнительные поля input file нажатием кнопки добавить, протестировал отдельно всё работает, вставил его в php код начал тестировать и php не принимает данные из формы, все остальные поля приходят а поля созданные js уже после прогрузки страницы он невидит.
$_FILES пустой, print_r($_FILES) показывает - array ( ), $_FILES['fileData']['error']; - показывает просто - array.
есть какиелибо идеи чем это может быть вызванно? с сервером все отлично, отдельно от класса форма нармально высылает данные.
форма выглядит вот так:
<form enctype="multipart/form-data" action="lib.php" name="products" method="post">
<input type="text" name="name" class="i">
<input type="text" name="price" class="i">
<input type="button" onclick="addInput();" value="Добавить" style="width:60px" />
<div id="mf"></div>
<input type="text" name="size" class="i">
<input type="text" name="color" class="i">
<input type="text" name="qty" class="i">
<select name="category" class="s">
<option name="1" value="1" >Майки</option>
</select>
<select name="brands" class="s">
<option name="1" value="1" >MISHKA NYC</option>
</select>
<input type="submit" value="Сохранить">
</form>
когда подставляю реальные input'ы то файлы приходят, в любом количестве.
js - скрипт:
var inputIndex = 1;
function addInput(){
inputIndex++;
var content = document.getElementById("mf");
var block = document.createElement("div");
var _input = document.createElement("input");
var _remover = document.createElement("input");
_input.setAttribute("type" , "file");
_input.setAttribute("name" , "fileData[]");
_input.setAttribute("size" , "80");
_input.setAttribute("id" , inputIndex );
block.setAttribute("id" , "input-block-" + inputIndex);
_remover.setAttribute("type" , "button");
_remover.setAttribute("value" , "Удалить");
_remover.setAttribute("style" , "width:60px;");
_remover.setAttribute("delete" , inputIndex);
_remover.addEventListener("click" , function(e)
{
removeInput(e.target.getAttribute("delete"));
},false);
block.appendChild(_input);
block.appendChild(_remover);
content.appendChild(block);
}
function removeInput(index){
var content = document.getElementById("mf");
var _forRemover = document.getElementById("input-block-" + index);
content.removeChild(_forRemover);
}
есть идеи?
я написал небольшой класс для генерации форм по заданным параметрам, в нем я поставил форму с javascript'ом который создает дополнительные поля input file нажатием кнопки добавить, протестировал отдельно всё работает, вставил его в php код начал тестировать и php не принимает данные из формы, все остальные поля приходят а поля созданные js уже после прогрузки страницы он невидит.
$_FILES пустой, print_r($_FILES) показывает - array ( ), $_FILES['fileData']['error']; - показывает просто - array.
есть какиелибо идеи чем это может быть вызванно? с сервером все отлично, отдельно от класса форма нармально высылает данные.
форма выглядит вот так:
<form enctype="multipart/form-data" action="lib.php" name="products" method="post">
<input type="text" name="name" class="i">
<input type="text" name="price" class="i">
<input type="button" onclick="addInput();" value="Добавить" style="width:60px" />
<div id="mf"></div>
<input type="text" name="size" class="i">
<input type="text" name="color" class="i">
<input type="text" name="qty" class="i">
<select name="category" class="s">
<option name="1" value="1" >Майки</option>
</select>
<select name="brands" class="s">
<option name="1" value="1" >MISHKA NYC</option>
</select>
<input type="submit" value="Сохранить">
</form>
когда подставляю реальные input'ы то файлы приходят, в любом количестве.
js - скрипт:
var inputIndex = 1;
function addInput(){
inputIndex++;
var content = document.getElementById("mf");
var block = document.createElement("div");
var _input = document.createElement("input");
var _remover = document.createElement("input");
_input.setAttribute("type" , "file");
_input.setAttribute("name" , "fileData[]");
_input.setAttribute("size" , "80");
_input.setAttribute("id" , inputIndex );
block.setAttribute("id" , "input-block-" + inputIndex);
_remover.setAttribute("type" , "button");
_remover.setAttribute("value" , "Удалить");
_remover.setAttribute("style" , "width:60px;");
_remover.setAttribute("delete" , inputIndex);
_remover.addEventListener("click" , function(e)
{
removeInput(e.target.getAttribute("delete"));
},false);
block.appendChild(_input);
block.appendChild(_remover);
content.appendChild(block);
}
function removeInput(index){
var content = document.getElementById("mf");
var _forRemover = document.getElementById("input-block-" + index);
content.removeChild(_forRemover);
}
есть идеи?