【问题标题】:When I clone a file input, the cloned input does not keep the uploaded file. The original input does当我克隆文件输入时,克隆的输入不会保留上传的文件。原始输入确实
【发布时间】:2016-06-01 11:18:58
【问题描述】:

当我克隆输入类型文件时,上传到克隆输入的文件碰巧附加到原始输入。就好像克隆的输入代表并获取原始的附件。

我通过以下方式克隆它: clonedInput = $('input[type=file]').clone(true) 是否可以克隆文件输入并独立使用它? 还是有其他方法可以解决这个问题。

在 dom 上,用户可以选择通过单击复制第一个输入的按钮来上传多个文件,但复制不起作用,因为它将文件附加到原始输入。

【问题讨论】:

  • 您不能设置输入的值。所以克隆将没有价值。同样使用现代浏览器,用户应该能够通过一个输入选择多个文件。你真的需要那个吗?
  • 听起来您可能需要手动为克隆的输入提供唯一 ID,否则克隆可能使用与原始 ID 相同的 ID,因此附件也与原始输入相关联。
  • 我确实更改了 id 和 name 属性,但它仍然无法正常工作。实际上我确实有多个属性,但是用户应该能够克隆包含文件输入的表单以进行第二次提交

标签: javascript jquery file input input-type-file


【解决方案1】:

解决问题的方法是使用 .prop("outerHTML") 将 html 转换为字符串,然后使用 $.parseHTML() 将其转换回 html 元素,以便 dom 将其视为全新或新鲜元素。

【讨论】:

  • 这有点不合时宜。你试过我的答案了吗?
【解决方案2】:

使用multiple 属性在单个input type="file" 元素上上传多个文件

<input type="file" multiple />

【讨论】:

    【解决方案3】:

    尝试为克隆的项目提供一个唯一 ID,如下所示:

    clonedInput = $('input[type=file]').clone(true).attr("id",function(i,oldVal) {
                return oldVal.replace(/\d+/,function(m){
                    return (+m + 1);
                });
    

    【讨论】:

      猜你喜欢
      • 2015-12-13
      • 2012-03-28
      • 2022-06-10
      • 2014-08-19
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 2017-07-19
      • 1970-01-01
      相关资源
      最近更新 更多