Javascript HTML:是否将表单字段复制到另一个表单,包括文件输入字段?
我发现出于安全原因,不能用javascript设置表单文件输入字段值 我只是想把一个文件输入复制到另一个表单并发布,我搜索了一个工作区,但找不到任何东西,可能吗 更新:我的代码:Javascript HTML:是否将表单字段复制到另一个表单,包括文件输入字段?,javascript,html,Javascript,Html,我发现出于安全原因,不能用javascript设置表单文件输入字段值 我只是想把一个文件输入复制到另一个表单并发布,我搜索了一个工作区,但找不到任何东西,可能吗 更新:我的代码: function prepareUpload( filevalue ){ document.getElementById('logo').value =filevalue; var mform = document.getElementById('sleeker'); ajaxUpload( mform,'&
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”
对于一些解决方法,您可能希望查看检查的建议:
除了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'));