Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态创建的输入类型=文件在PHP中不工作?_Javascript_Php_Forms - Fatal编程技术网

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

Javascript 动态创建的输入类型=文件在PHP中不工作?,javascript,php,forms,Javascript,Php,Forms,我有一个我正在测试的表单,我希望用户能够上传他们需要的任意多的文件 这是表格,我已经准备好了。表单不是自动关闭的/>。如果输入字段不是动态生成的,则服务器接受来自其他脚本甚至来自此脚本的上传文件 <table class="add-table"> <tr> <td colspan="3"> Input New Specification Details <form method="p

我有一个我正在测试的表单,我希望用户能够上传他们需要的任意多的文件

这是表格,我已经准备好了。表单不是自动关闭的/>。如果输入字段不是动态生成的,则服务器接受来自其他脚本甚至来自此脚本的上传文件

<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>

输入新的规范细节
规格名称:

您的HTML无效

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


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

如果我明白你想做什么,你肯定能做到,所以我认为你的代码中一定有什么东西在创建表单的文件上传部分?你能发布JavaScript吗?我同意Andrew的观点,这是完全可行的,php是服务器端的,不在乎添加了什么输入。您应该仔细检查您的javascriptI,我看到了可能的副本,答案是它是一个未关闭的表单。我发现我的表单是正确关闭的。我已经去掉了所有的PHP代码,所以名称应该不重要。PHP所做的唯一事情就是var_dump($\u文件);当使用动态和静态时,它输出:数组(0){}当使用动态和静态时,它输出:数组(1){[“附件”]=>数组(5){[“名称”]=>string(9)“test1.txt”[“类型”]=>string(10)“文本/普通”[“tmp_名称”]=>string(25)”C:\WINDOWS\Temp\php22.tmp”[“错误”=>int(0)[“大小”=>int(0)}你不能在
周围放置
。是的,这是正确的答案。尽管如此,布局表在所有浏览器中都是非常好的和可预测的,并且非常适合表单。它们为不可预测的浮动列和凌乱的CSS提供了良好的结构。我知道从语义上讲,表格不是用于布局的,但实际上它们是最好的,因为它们是结构化的,并且易于理解/编辑,特别是对于表单。我希望我们能得到一个标签,而不是嵌套的div或非语义的UL,LI布局“解决方案”。我不明白的是,为什么我的无效HTML在输入字段是静态的情况下工作,为什么它在动态的情况下会断开。在这两种情况下,
中输入字段在
中的位置都不会改变。
$("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;
});