我有一个表单,我正在测试我希望用户能够根据需要上传尽可能多的文件。
这是表格,我有enctype设置。表格不是自动关闭/> 。如果输入字段不是动态生成的,服务器甚至可以从其他脚本接受上传的文件。
<table class="add-table">
<tr>
<td colspan="3">
Input New Specification Details
<form method="post" action="specifications.php">
<input type="submit" value="Go Back" />
</form>
</td>
</tr>
<form action="specifications-add.php" method="post" enctype="multipart/form-data">
<tr>
<td><label>Specification Name:</label></td>
<td><input type="text" name="spec-name" value="<?php echo $spec_name; ?>" /></td>
<td rowspan="3" class="add-spec-save-cell"><input type="submit" name="save-new-spec" value="Save Specification" /></td>
</tr>
<tr>
<td><label>Specification Type:</label></td>
<td>
<input type="radio" name="spec-type" value="astm" />ASTM<br />
<input type="radio" name="spec-type" value="oem" />OEM<br />
<input type="radio" name="spec-type" value="none" />None
</td>
</tr>
<tr>
<td><label>Attachments:</label></td>
<td><button id="add-another-row">+ Add Row</button></td>
</tr>
<tr>
<td> </td>
<td colspan="2" id="attachments-cell">
<!-- Dynamic code appended here -->
</td>
</tr>
</form>
</table>
以下是生成表单的javascript(jQuery):
$("button#add-another-row").click(function () {
var newRow = "<div class='new-attachment-row'>";
newRow += "<input name='attachments[]' type='file' />";
newRow += "<button class='delete-btn'>Delete </button></div>";
$("td#attachments-cell").append(newRow);
return false;
});
如果我只是在表单中添加一个简单的<input name="attachment" type="file">
,则会填充$ _FILES数组。如果我使用javascript动态生成脚本,则不会填充$ _FILES数据,并且在调用var_dump($ _ FILES)时不显示任何值;
这是一个已知的限制还是错误?我无法弄清楚我做错了什么。
视觉供您参考:
答案 0 :(得分:2)
您的HTML无效。
表单元素不能是表的子元素。浏览器将尝试抢救文档。在控制台中查看该页面,您将看到它如何改变您的文档。
您需要更改代码以使其有效。使用表格进行布局是个坏主意。