动态创建输入类型=文件不能在PHP中工作?

时间:2014-05-02 19:20:00

标签: javascript php forms

我有一个表单,我正在测试我希望用户能够根据需要上传尽可能多的文件。

这是表格,我有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>&nbsp;</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)时不显示任何值;

这是一个已知的限制还是错误?我无法弄清楚我做错了什么。

视觉供您参考: enter image description here

1 个答案:

答案 0 :(得分:2)

您的HTML无效。

表单元素不能是表的子元素。浏览器将尝试抢救文档。在控制台中查看该页面,您将看到它如何改变您的文档。

您需要更改代码以使其有效。使用表格进行布局是个坏主意。