Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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/Jquery中删除所选文件_Javascript_Jquery_Html - Fatal编程技术网

如何在Javascript/Jquery中删除所选文件

如何在Javascript/Jquery中删除所选文件,javascript,jquery,html,Javascript,Jquery,Html,我有一个表单,允许用户上传多张图片。如果用户不想上传特定的图像,他们可以选择逐个删除图像 现在,如何从他们删除的文件类型(例如,不想上载)中删除该值 我尝试过使用($('input').val(“”),但它只适用于单个图像,不适用于多个图像。如果我将其用于多个图像,则所有上载的图像值将变为空,而不是用户要删除的特定图像。。下面是我的代码:- HTML <input type="file" id="files2" name="cert_img" multiple> <output

我有一个表单,允许用户上传多张图片。如果用户不想上传特定的图像,他们可以选择逐个删除图像

现在,如何从他们删除的文件类型(例如,不想上载)中删除该值

我尝试过使用($('input').val(“”),但它只适用于单个图像,不适用于多个图像。如果我将其用于多个图像,则所有上载的图像值将变为空,而不是用户要删除的特定图像。。下面是我的代码:-

HTML

<input type="file" id="files2" name="cert_img" multiple>
<output id="list2"></output>

Javascript

    var count2=0;
    function handleFileSelect2(evt) {
    var $fileUpload = $("input#files2[type='file']");
    count2=count2+parseInt($fileUpload.get(0).files.length);

    var files = evt.target.files;
    for (var i = 0, f; f = files[i]; i++) {
    if (!f.type.match('image.*')) {
    continue;
    }
    var reader = new FileReader();

    reader.onload = (function (theFile) {
    return function (e) {
    var span = document.createElement('span');
    span.innerHTML = ['<img class="thumb" id="image_X" src="', e.target.result, '" title="', escape(theFile.name), '"/><span class="remove_img_preview"></span>'].join('');
    document.getElementById('list2').insertBefore(span, null);
                };
            })(f);

    reader.readAsDataURL(f);
        }
    }

    $('#files2').change(function(evt){
    handleFileSelect2(evt);
    });  

    $('#list2').on('click', '.remove_img_preview',function () {
        $(this).parent('span').remove();

        //$('input').val("");



    });
var count2=0;
功能手柄文件选择2(evt){
var$fileUpload=$(“输入#files2[type='file']);
count2=count2+parseInt($fileUpload.get(0.files.length));
var files=evt.target.files;
for(var i=0,f;f=files[i];i++){
如果(!f.type.match('image.*')){
继续;
}
var reader=new FileReader();
reader.onload=(函数(文件){
返回函数(e){
var span=document.createElement('span');
span.innerHTML=['').join('');
document.getElementById('list2').insertBefore(span,null);
};
})(f) );
reader.readAsDataURL(f);
}
}
$('#files2').change(函数(evt){
handleFileSelect2(evt);
});  
$(“#列表2”)。在('单击','上。删除\u img\u预览',函数(){
$(this.parent('span').remove();
//$('input').val(“”);
});
提前谢谢

根据问题,您不能更改
文件列表
内容,因为它是只读的

但是,如果要删除文件列表的文件,可以创建一个新对象,并将要上载的文件设置为该对象。然后使用创建的对象上载文件。运行我的示例并选择多个文件。然后单击要删除的任何文件。删除文件后,请参见浏览器控制台

var文件;
$(“#文件”)。关于(“更改”,函数(e){
文件=$(“#文件”)[0]。文件;
$.each(文件、函数(索引、值){
$(“ol”).append(“
  • “+value.name+”
  • ”); }); }); $(文档)。在(“单击”,“li”,函数()上){ var newFiles={}; var index=$(this.index(); $((“li:n子项(“+(索引+1)+”)).remove(); $(“li”)。每个(函数(索引,元素){ var dataIndex=$(元素).attr(“数据索引”); newFiles[index]=文件[dataIndex]; }); console.log(新文件); });
    li:悬停{
    颜色:红色;
    游标:默认值;
    }