Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 HTML:是否将表单字段复制到另一个表单,包括文件输入字段?_Javascript_Html - Fatal编程技术网

Javascript HTML:是否将表单字段复制到另一个表单,包括文件输入字段?

Javascript HTML:是否将表单字段复制到另一个表单,包括文件输入字段?,javascript,html,Javascript,Html,我发现出于安全原因,不能用javascript设置表单文件输入字段值 我只是想把一个文件输入复制到另一个表单并发布,我搜索了一个工作区,但找不到任何东西,可能吗 更新:我的代码: function prepareUpload( filevalue ){ document.getElementById('logo').value =filevalue; var mform = document.getElementById('sleeker'); ajaxUpload( mform,'&

我发现出于安全原因,不能用javascript设置表单文件输入字段值

我只是想把一个文件输入复制到另一个表单并发布,我搜索了一个工作区,但找不到任何东西,可能吗

更新:我的代码:

function prepareUpload( filevalue ){

document.getElementById('logo').value =filevalue;
var mform = document.getElementById('sleeker');
    ajaxUpload( mform,'<?php echo base_url(); ?>'); // a methods to upload...
}

<input class="input-file-upload" type="file" size="20" name="logodummy" id="logodummy" onchange="prepareUpload( this.value );" />

<form action="" method="post" name="sleeker" id="sleeker" enctype="multipart/form-data" onbeforesubmit="return false;">
            <p><input type="hidden" name="logo" id="logo" /></p>
        </form>
函数prepareUpload(filevalue){
document.getElementById('logo')。value=filevalue;
var mform=document.getElementById('sleeker');
ajaxUpload(mform“”);//上载的方法。。。
}


任何其他文件输入都可以正常工作,我可以使用$\u POST接收,但是$\u文件没有值。这段代码本身也可以很好地工作。我认为这个coe就足够了?

是的,您可以将
放在HTML表单之外,然后使用
onChange
事件在发布的表单中填充

<input type="file" 
       onchange="document.getElementById('hidden_file').value = this.value;" />

<form method="POST">
    <input type="hidden" id="hidden_file" value="" />
    <input type="submit" />
</form>

但是,在现代浏览器中,您只能访问文件名,而不能访问完整路径。有关此主题的更多信息,请查看以下堆栈溢出帖子:


更新:

最初的问题让我认为您只需要将“文件名”复制到另一个HTML表单,而不是整个
表示

在更新之后,我想你的意思是这样的:

<input type="file" 
       onchange="document.getElementById('hidden_file').value = this.value;" />

<form method="POST">
    <input type="file" id="hidden_file" value="" />
    <input type="submit" />
</form>

不幸的是,上述方法不起作用。如果您尝试上述示例,Firefox将返回
“安全错误代码:1000”

对于一些解决方法,您可能希望查看检查的建议:


您可以将文件输入移动到另一个表单(使用appendChild或insertBefore),提交表单,然后将其移回。

我还没有对此进行深入测试,但它似乎在Firefox中工作

使用


除了jQuery之外,它与cloneNode非常相似

在xulrunner浏览器(如firefox)中,我成功地使用了以下内容:

$('input:file').clone().appendTo($('#mainform'));
这会将所有文件输入对象复制到id=mainform的表单中


避免在要克隆的对象中使用id属性。id应该总是唯一的。

我意识到这可能会迟到,但在HTML5中,您可以使用“form”属性以表单为目标,比如[form id=“the_form”]…[/form]…[input form=“the_form type=“file”../]

谢谢堆,Daniel。这是个好主意。现在的问题是服务器端没有可用的值,即上传的数组是空的(名称、大小、tmp_名称等在FireFox 3.1中没有值).为什么?-Apache httpd服务器使用PHP。@pMan:可以用HTML和PHP中的一个小片段更新您的问题吗?如果将文件输入的值复制到隐藏的输入中,您将看不到的另一件事是文件!@David。是的,您是对的。我对您的建议投了赞成票,并在我的回答中引用了它们,因为它是仍然在顶部。更新之前的原始问题使得OP似乎只想复制文件名,而不是整个字段。很抱歉延迟,因为这非常紧急,我使用了两个表单。但这里有两个解决方案。谢谢Daniel和David。这在Chrome 31中不起作用。新输入的值为空。您能更改JSFIDL吗我不明白你的答案:-(
$('input:file').clone().appendTo($('#mainform'));