将表单的文件输入字段的值复制到另一个表单的输入字段

Posted

技术标签:

【中文标题】将表单的文件输入字段的值复制到另一个表单的输入字段【英文标题】:copying the value of a form's file input field to another form's input field 【发布时间】:2012-02-12 11:03:21 【问题描述】:

所以我有两种形式,都有一个文件类型输入字段,我试过了

$('.inputfield1').change(function()
   var file = $(this).val();
   $('.inputfield2').val(file);
);

但是它没有被正确复制并且firebug在错误控制台中抱怨“安全错误”

我做错了什么以及如何正确复制文件输入字段的值

顺便说一下,目标表单的目标设置为 iframe(不是不同的域)

【问题讨论】:

感谢您的提问。我正在做完全相同的事情并遇到了同样的问题。很高兴知道我要去其他人已经去过的地方。 在这里找到了解决方案***.com/a/66306273/819449 【参考方案1】:

您不能将一个文件输入的值移动到另一个文件。相反,克隆输入,将克隆放置在原件所在的位置,然后将原件移动到隐藏表单中。

$(".inputfield1").change(function()
  var $this = $(this), $clone = $this.clone();
  $this.after($clone).appendTo(hiddenform);
);

【讨论】:

我知道它没有,克隆是一个占位符。我们将原始元素附加到隐藏表单中,.after() 返回原始元素,而不是我们在其后附加的元素。理想情况下,在 iframe 加载后,我们会清空原始文件并将其放回原来的位置。 你从哪里得到的?我以为 OP 只询问如何将文件输入字段的值复制到另一个,这是无法完成的。 我为一个常见问题提供了一种解决方法,将文件输入的值从一个文件输入获取到一个隐藏形式的文件输入,这是不可能的。解决方法是将原始表单移动到隐藏表单中,提交表单,然后将其移回。他没有给我们任何表单代码,所以我把它省略了。克隆仅用于装饰目的,您不希望在文件字段的位置出现空白点。 哦,我现在看到了真正的问题。谢谢你的解释。 +1 我正在查看这段代码,当我试图通过一个函数执行此操作时,它无法正常工作,因为它不明白 clone 行中是什么>.after(clone)... 我将对象作为参数传递,而不是改变它,所以它类似于 $(input) 和 $clone = $(input).clone( );【参考方案2】:

我知道这是一个迟到的答案,但我今天发现了一个类似的问题。

我所做的是在删除另一个位置的当前输入后将文件输入移动到新位置。通过移动元素,我的所有测试中的一切都保持不变。

$('.inputfield1').change(function() 
  $('.otherinputfield').remove();
  $('#newform').append($(this));
);

【讨论】:

我不明白,.otherinputfield 位于#newform 里面?获取html的快照会很好

以上是关于将表单的文件输入字段的值复制到另一个表单的输入字段的主要内容,如果未能解决你的问题,请参考以下文章

在不同页面中将输入字段从一个复制到另一个

将数据从一个表单域传递到另一个表单域

访问表单更新多个字段

从 json 动态创建的 Javascript 表单输入,需要将对象映射到另一个对象的正确字段并保存

是否可以将列表中的值添加到输入表单字段?

将 HTML 表格的表单输入字段转换为 JSON