jquery - 重置输入字段后变量变空

标签 jquery input

<input type="file" onchange="uploadFiles()" multiple/>

将输入值存储到变量中并重置输入字段后,变量变空

function uploadFiles(){
    var newFiles = $('input')[0].files;
    $('input').replaceWith($('input').val('').clone(true));
    console.log(newFiles); // result == []
}

请问我该如何解决这个问题?

最佳答案

$('input')[0].files 为您提供 FileList附加到它的input的属性。更改输入的值将导致更改属性的值及其所有分配。

您可以通过将文件添加到单独的数组来解决该问题:

var newFiles = $('input')[0].files;
var filesArray = [];
for(var i=0; i<newFiles.length; i++){
    filesArray[i] = newFiles[i];
}
$('input').replaceWith($('input').val('').clone(true));
console.log(newFiles); // result == []
console.log(filesArray); // result == [File]

Demo

注意:出于安全原因,在更改原始输入的值后,您可能会或可能不会按预期使用文件。不过我还没有测试过。如果您能确认或揭穿,请发表评论。

关于jquery - 重置输入字段后变量变空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44623680/

相关文章:

html - 我可以在我的表单元素上配置拼写检查属性使用的字典语言吗?

Java多线程进程

javascript - jQuery/JavaScript : Changing URL hash from &lt;input&gt; tag or on form submit

javascript - 使用 <form> 和 &lt;input&gt; 元素作为 JavaScript 代码的输入。这是最好的方法吗?

jquery - Steve Sanderson 的 BeginCollectionItem 不适用于所有情况...潜在的解决方案?

javascript - 某些链接上的 FancyBox 导航

javascript - 在 Jquery 中选择元素的 ID

javascript - 如果元素没有包裹起来,如何用 div 容器包裹该元素?

c - 如何控制输入数据格式(C)?

javascript - 如何在固定高度和固定宽度的 div 中包含 fullscreen.js 幻灯片