2015-08-18 37 views
14

如何添加一個文件中去除這裏按鈕一樣簡單刪除一個去除按鈕點擊多個文件上傳文件排隊這樣當使用HTML5文件輸入

enter image description here

之所以我不是使用免費的文件上傳插件與OOB插件,因爲我的客戶需求是出於安全目的,他們需要簡單的上傳用戶界面,沒有任何複雜的插件。

$(function() { 
 
    var dropZoneId = "drop-zone"; 
 
    var buttonId = "clickHere"; 
 
    var mouseOverClass = "mouse-over"; 
 

 
    var dropZone = $("#" + dropZoneId); 
 
    var ooleft = dropZone.offset().left; 
 
    var ooright = dropZone.outerWidth() + ooleft; 
 
    var ootop = dropZone.offset().top; 
 
    var oobottom = dropZone.outerHeight() + ootop; 
 
    var inputFile = dropZone.find("input"); 
 
    document.getElementById(dropZoneId).addEventListener("dragover", function(e) { 
 
    e.preventDefault(); 
 
    e.stopPropagation(); 
 
    dropZone.addClass(mouseOverClass); 
 
    var x = e.pageX; 
 
    var y = e.pageY; 
 

 
    if (!(x < ooleft || x > ooright || y < ootop || y > oobottom)) { 
 
     inputFile.offset({ 
 
     top: y - 15, 
 
     left: x - 100 
 
     }); 
 
    } else { 
 
     inputFile.offset({ 
 
     top: -400, 
 
     left: -400 
 
     }); 
 
    } 
 

 
    }, true); 
 

 
    if (buttonId != "") { 
 
    var clickZone = $("#" + buttonId); 
 

 
    var oleft = clickZone.offset().left; 
 
    var oright = clickZone.outerWidth() + oleft; 
 
    var otop = clickZone.offset().top; 
 
    var obottom = clickZone.outerHeight() + otop; 
 

 
    $("#" + buttonId).mousemove(function(e) { 
 
     var x = e.pageX; 
 
     var y = e.pageY; 
 
     if (!(x < oleft || x > oright || y < otop || y > obottom)) { 
 
     inputFile.offset({ 
 
      top: y - 15, 
 
      left: x - 160 
 
     }); 
 
     } else { 
 
     inputFile.offset({ 
 
      top: -400, 
 
      left: -400 
 
     }); 
 
     } 
 
    }); 
 
    } 
 

 
    document.getElementById(dropZoneId).addEventListener("drop", function(e) { 
 
    $("#" + dropZoneId).removeClass(mouseOverClass); 
 
    }, true); 
 

 
    inputFile.on('change', function(e) { 
 
    $('#filename').html(""); 
 
    var fileNum = this.files.length, 
 
     initial = 0, 
 
     counter = 0; 
 
    for (initial; initial < fileNum; initial++) { 
 
     counter = counter + 1; 
 
     $('#filename').append('<span class="fa-stack fa-lg"><i class="fa fa-file fa-stack-1x "></i><strong class="fa-stack-1x" style="color:#FFF; font-size:12px; margin-top:2px;">' + counter + '</strong></span> ' + this.files[initial].name + '&nbsp;&nbsp;<span class="fa fa-times-circle fa-lg closeBtn" title="remove"></span><br>'); 
 
    } 
 
    }); 
 

 
})
#drop-zone { 
 
    width: 100%; 
 
    min-height: 150px; 
 
    border: 3px dashed rgba(0, 0, 0, .3); 
 
    border-radius: 5px; 
 
    font-family: Arial; 
 
    text-align: center; 
 
    position: relative; 
 
    font-size: 20px; 
 
    color: #7E7E7E; 
 
} 
 
#drop-zone input { 
 
    position: absolute; 
 
    cursor: pointer; 
 
    left: 0px; 
 
    top: 0px; 
 
    opacity: 0; 
 
} 
 
/*Important*/ 
 

 
#drop-zone.mouse-over { 
 
    border: 3px dashed rgba(0, 0, 0, .3); 
 
    color: #7E7E7E; 
 
} 
 
/*If you dont want the button*/ 
 

 
#clickHere { 
 
    display: inline-block; 
 
    cursor: pointer; 
 
    color: white; 
 
    font-size: 17px; 
 
    width: 150px; 
 
    border-radius: 4px; 
 
    background-color: #4679BD; 
 
    padding: 10px; 
 
} 
 
#clickHere:hover { 
 
    background-color: #376199; 
 
} 
 
#filename { 
 
    margin-top: 10px; 
 
    margin-bottom: 10px; 
 
    font-size: 14px; 
 
    line-height: 1.5em; 
 
} 
 
.file-preview { 
 
    background: #ccc; 
 
    border: 5px solid #fff; 
 
    box-shadow: 0 0 4px rgba(0, 0, 0, 0.5); 
 
    display: inline-block; 
 
    width: 60px; 
 
    height: 60px; 
 
    text-align: center; 
 
    font-size: 14px; 
 
    margin-top: 5px; 
 
} 
 
.closeBtn:hover { 
 
    color: red; 
 
} 
 
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet" /> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div id="drop-zone"> 
 
    <p>Drop files here...</p> 
 
    <div id="clickHere">or click here.. <i class="fa fa-upload"></i> 
 
    <input type="file" name="file" id="file" multiple /> 
 
    </div> 
 
    <div id='filename'></div> 
 
</div>

注:我不承認我一直在重複使用它作爲其他人的我的資源,並修改了它爲我的客戶

**更新 在這裏,我的代碼fiddle鏈接

+0

見HTTP的http://stackoverflow.com/q/29841147/,http://stackoverflow.com/q/32002431/ – guest271314

+0

複製://計算器。 com/questions/3144419/how-do-i-remove-a-file-from-the-filelist –

+0

哦,對不起,我沒有注意到他們之前我問,我首先搜索,但再次感謝傢伙提及這一點。 –

回答

19

HTML5的文件列表文件的輸入是隻讀的,所以試圖從它刪除文件時,你將不會被允許。

你需要做的是保持一個單獨的數組列表(JSON陣列按照示例)。

我用一個div來包裝你的X按鈕,該div保存文件索引連接到'file_'字符串,並添加了一個onclick函數removeLine(obj),它接受元素作爲對象。

我還在全局範圍內添加了一個JSON數組finalFiles,並將inputFile移至全局範圍。

當文件輸入改變,我通過設置JSON陣列選定的文件:

$.each(this.files,function(idx,elm){ 
      finalFiles[idx]=elm; 
     }); 

功能removeLine將刷新輸入文件列表中,再次讓同一個文件選擇,如果用戶刪除文件錯誤,函數從包裝器分區id中獲取文件索引,刪除包裝器div,然後從JSON數組中刪除該文件。

function removeLine(obj) 
    { 
     inputFile.val(''); 
     var jqObj = $(obj); 
     var container = jqObj.closest('div'); 
     var index = container.attr("id").split('_')[1]; 
     container.remove(); 

     delete finalFiles[index]; 
     //console.log(finalFiles); 
    } 

您可以保持你的文件時,表單提交,並通過AJAX後使用FORMDATA以類似的方式將它們發送到This Article

var dropZoneId = "drop-zone"; 
 
    var buttonId = "clickHere"; 
 
    var mouseOverClass = "mouse-over"; 
 
var dropZone = $("#" + dropZoneId); 
 
var inputFile = dropZone.find("input"); 
 
var finalFiles = {}; 
 
$(function() { 
 
    
 

 
    
 
    var ooleft = dropZone.offset().left; 
 
    var ooright = dropZone.outerWidth() + ooleft; 
 
    var ootop = dropZone.offset().top; 
 
    var oobottom = dropZone.outerHeight() + ootop; 
 
    
 
    document.getElementById(dropZoneId).addEventListener("dragover", function(e) { 
 
    e.preventDefault(); 
 
    e.stopPropagation(); 
 
    dropZone.addClass(mouseOverClass); 
 
    var x = e.pageX; 
 
    var y = e.pageY; 
 

 
    if (!(x < ooleft || x > ooright || y < ootop || y > oobottom)) { 
 
     inputFile.offset({ 
 
     top: y - 15, 
 
     left: x - 100 
 
     }); 
 
    } else { 
 
     inputFile.offset({ 
 
     top: -400, 
 
     left: -400 
 
     }); 
 
    } 
 

 
    }, true); 
 

 
    if (buttonId != "") { 
 
    var clickZone = $("#" + buttonId); 
 

 
    var oleft = clickZone.offset().left; 
 
    var oright = clickZone.outerWidth() + oleft; 
 
    var otop = clickZone.offset().top; 
 
    var obottom = clickZone.outerHeight() + otop; 
 

 
    $("#" + buttonId).mousemove(function(e) { 
 
     var x = e.pageX; 
 
     var y = e.pageY; 
 
     if (!(x < oleft || x > oright || y < otop || y > obottom)) { 
 
     inputFile.offset({ 
 
      top: y - 15, 
 
      left: x - 160 
 
     }); 
 
     } else { 
 
     inputFile.offset({ 
 
      top: -400, 
 
      left: -400 
 
     }); 
 
     } 
 
    }); 
 
    } 
 

 
    document.getElementById(dropZoneId).addEventListener("drop", function(e) { 
 
    $("#" + dropZoneId).removeClass(mouseOverClass); 
 
    }, true); 
 

 

 
    inputFile.on('change', function(e) { 
 
    finalFiles = {}; 
 
    $('#filename').html(""); 
 
    var fileNum = this.files.length, 
 
     initial = 0, 
 
     counter = 0; 
 

 
    $.each(this.files,function(idx,elm){ 
 
     finalFiles[idx]=elm; 
 
    }); 
 

 
    for (initial; initial < fileNum; initial++) { 
 
     counter = counter + 1; 
 
     $('#filename').append('<div id="file_'+ initial +'"><span class="fa-stack fa-lg"><i class="fa fa-file fa-stack-1x "></i><strong class="fa-stack-1x" style="color:#FFF; font-size:12px; margin-top:2px;">' + counter + '</strong></span> ' + this.files[initial].name + '&nbsp;&nbsp;<span class="fa fa-times-circle fa-lg closeBtn" onclick="removeLine(this)" title="remove"></span></div>'); 
 
    } 
 
    }); 
 

 

 

 
}) 
 

 
function removeLine(obj) 
 
{ 
 
    inputFile.val(''); 
 
    var jqObj = $(obj); 
 
    var container = jqObj.closest('div'); 
 
    var index = container.attr("id").split('_')[1]; 
 
    container.remove(); 
 

 
    delete finalFiles[index]; 
 
    //console.log(finalFiles); 
 
}
#drop-zone { 
 
    width: 100%; 
 
    min-height: 150px; 
 
    border: 3px dashed rgba(0, 0, 0, .3); 
 
    border-radius: 5px; 
 
    font-family: Arial; 
 
    text-align: center; 
 
    position: relative; 
 
    font-size: 20px; 
 
    color: #7E7E7E; 
 
} 
 
#drop-zone input { 
 
    position: absolute; 
 
    cursor: pointer; 
 
    left: 0px; 
 
    top: 0px; 
 
    opacity: 0; 
 
} 
 
/*Important*/ 
 

 
#drop-zone.mouse-over { 
 
    border: 3px dashed rgba(0, 0, 0, .3); 
 
    color: #7E7E7E; 
 
} 
 
/*If you dont want the button*/ 
 

 
#clickHere { 
 
    display: inline-block; 
 
    cursor: pointer; 
 
    color: white; 
 
    font-size: 17px; 
 
    width: 150px; 
 
    border-radius: 4px; 
 
    background-color: #4679BD; 
 
    padding: 10px; 
 
} 
 
#clickHere:hover { 
 
    background-color: #376199; 
 
} 
 
#filename { 
 
    margin-top: 10px; 
 
    margin-bottom: 10px; 
 
    font-size: 14px; 
 
    line-height: 1.5em; 
 
} 
 
.file-preview { 
 
    background: #ccc; 
 
    border: 5px solid #fff; 
 
    box-shadow: 0 0 4px rgba(0, 0, 0, 0.5); 
 
    display: inline-block; 
 
    width: 60px; 
 
    height: 60px; 
 
    text-align: center; 
 
    font-size: 14px; 
 
    margin-top: 5px; 
 
} 
 
.closeBtn:hover { 
 
    color: red; 
 
    display:inline-block; 
 
} 
 
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet" /> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div id="drop-zone"> 
 
    <p>Drop files here...</p> 
 
    <div id="clickHere">or click here.. <i class="fa fa-upload"></i> 
 
    <input type="file" name="file" id="file" multiple /> 
 
    </div> 
 
    <div id='filename'></div> 
 
</div>

+0

謝謝@KAD我會試試這個。 –

+1

你幾乎完美的一件事就是可以完善這一點,當你導入多個文件然後刪除一個只有該文件的文件組的文件時,你的目標文件中的所有文件也會被刪除,如果你刪除了文件元素部分的CSS'#拖放區輸入'的方式再次感謝。 –

+0

不用客氣 – KAD

2

我已經爲我的Dropzone做過這件事。隨意調整。這是來自我的Laravel應用程序。您應該關注avatar_refresh_upload。切斷不必要的東西,你就完成了。

function avatar_refresh_upload() { 
    var input = $('input#avatar[type=file]'); 

    input.replaceWith(input.val('').clone(true)); 

    $('#selected_file').html('{{ Lang::get('app.profile_avatar_select') }}'); 
    $('#avatar_refresh_upload').removeAttr('style'); 
} 

$(document).ready(function ($) { 

    $('input:file#avatar').change(function() { 
     var file_name = $(this).val(); 
     if (file_name.length > 10) { 
      file_name = file_name.substring(0, 10) + '...'; 
     } 
     $('#selected_file').html('File "' + file_name + '" chosen'); 
     $('#avatar_refresh_upload').css('display', 'inline-block'); 
    }); 

    $('#avatar_refresh_upload').on('click', function() { 
     avatar_refresh_upload(); 
    }); 

    @if ($user->avatar != '') 
    $('#remove_avatar').change(function() { 

     if ($(this).is(':checked')) { 

      avatar_refresh_upload(); 
      $('#avatar').prop('disabled', true); 
      $('#avatar_preview').css('opacity', '0.5'); 
      $('#avatar_upload_form_area').css('opacity', '0.5'); 
      $('#remove_avatar_info').show(); 

     } else { 

      $('#avatar').prop('disabled', false); 
      $('#avatar_preview').removeAttr('style'); 
      $('#avatar_upload_form_area').removeAttr('style'); 
      $('#remove_avatar_info').removeAttr('style'); 

     } 
    }); 
    @endif 

}); 

使長話短說 - 如果你想重新輸入文件你選擇了一個文件上傳,但在提交之前之後,你必須運行

input.replaceWith(input.val('').clone(true)); 
+0

好吧,我會嘗試這謝謝@slick –

1
$(function() { 

    var dropZoneId = "drop-zone"; 
    var buttonId = "clickHere"; 
    var mouseOverClass = "mouse-over"; 

    var dropZone = $("#" + dropZoneId); 
    var ooleft = dropZone.offset().left; 
    var ooright = dropZone.outerWidth() + ooleft; 
    var ootop = dropZone.offset().top; 
    var oobottom = dropZone.outerHeight() + ootop; 
    var inputFile = dropZone.find("input"); 

    var filesArr = []; 

    function showFiles() { 
    $('#filename').html(""); 
    var fileNum = filesArr.length; 
    for (var i = 0; i < fileNum; i++) { 
     $('#filename').append('<div><span class="fa-stack fa-lg"><i class="fa fa-file fa-stack-1x "></i><strong class="fa-stack-1x" style="color:#FFF; font-size:12px; margin-top:2px;">'+ i + '</strong></span> ' + filesArr[i].name + '&nbsp;&nbsp;<span class="fa fa-times-circle fa-lg closeBtn" title="remove"></span></div>'); 
     } 
    } 

    function addFiles(e) { 
    var tmp; 

    // transfer dropped content to temporary array 
    if (e.dataTransfer) { 
     tmp = e.dataTransfer.files; 
    } else if (e.target) { 
     tmp = e.target.files; 
    }   

    // Copy the file items into the array 
    for(var i = 0; i < tmp.length; i++) { 
     filesArr.push(tmp.item(i)); 
    } 

    // remove all contents from the input elemnent (reset it) 
    inputFile.wrap('<form>').closest('form').get(0).reset(); 
    inputFile.unwrap(); 

    showFiles(); 
    }  

    document.getElementById(dropZoneId).addEventListener("dragover", function (e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    dropZone.addClass(mouseOverClass); 
    var x = e.pageX; 
    var y = e.pageY; 

    if (!(x < ooleft || x > ooright || y < ootop || y > oobottom)) { 
     inputFile.offset({ 
      top: y - 15, 
      left: x - 100 
     }); 
    } else { 
     inputFile.offset({ 
      top: -400, 
      left: -400 
     }); 
    } 
    }, true); 

    if (buttonId != "") { 
    var clickZone = $("#" + buttonId); 

    var oleft = clickZone.offset().left; 
    var oright = clickZone.outerWidth() + oleft; 
    var otop = clickZone.offset().top; 
    var obottom = clickZone.outerHeight() + otop; 

    $("#" + buttonId).mousemove(function (e) { 
     var x = e.pageX; 
     var y = e.pageY; 
     if (!(x < oleft || x > oright || y < otop || y > obottom)) { 
      inputFile.offset({ 
       top: y - 15, 
       left: x - 160 
      }); 
     } else { 
      inputFile.offset({ 
       top: -400, 
       left: -400 
      }); 
     } 
    }); 
    } 
    document.getElementById(dropZoneId).addEventListener("drop", function (e) { 
    $("#" + dropZoneId).removeClass(mouseOverClass); 
    addFiles(e); 
    }, true); 

    inputFile.on('change', function(e) { 
    addFiles(e); 
    }); 

    $('#filename').on('click', '.closeBtn', function(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 

    var divElem = $(this).parent(); 
    var index = $('#filename').find('div').index(divElem); 
    if (index !== -1) { 
     $('#filename')[0].removeChild(divElem[0]); 
     filesArr.slice(index,1); 
    } 
    }); 

}) 
+0

好的,謝謝我認爲這是更好的,但會首先感謝@code唯一 –

+0

你可以做一個實際的例子 –

+0

如果你堅持你的代碼到一個小提琴,https://jsfiddle.net/ –

2

既然我們不能修改<input type'file' multiple>標籤中的選定文件數組,然後我更新了代碼以顯示文件的數量並在選擇多個文件時刪除所有文件。

還有就是updated code的小提琴。

$(function() { 
    var dropZoneId = "drop-zone"; 
    var buttonId = "clickHere"; 
    var mouseOverClass = "mouse-over"; 

    var dropZone = $("#" + dropZoneId); 
    var ooleft = dropZone.offset().left; 
    var ooright = dropZone.outerWidth() + ooleft; 
    var ootop = dropZone.offset().top; 
    var oobottom = dropZone.outerHeight() + ootop; 
    var inputFile = dropZone.find("input"); 
    document.getElementById(dropZoneId).addEventListener("dragover", function (e) { 
     e.preventDefault(); 
     e.stopPropagation(); 
     dropZone.addClass(mouseOverClass); 
     var x = e.pageX; 
     var y = e.pageY; 

     if (!(x < ooleft || x > ooright || y < ootop || y > oobottom)) { 
      inputFile.offset({ 
       top: y - 15, 
       left: x - 100 
      }); 
     } else { 
      inputFile.offset({ 
       top: -400, 
       left: -400 
      }); 
     } 

    }, true); 

    if (buttonId != "") { 
     var clickZone = $("#" + buttonId); 

     var oleft = clickZone.offset().left; 
     var oright = clickZone.outerWidth() + oleft; 
     var otop = clickZone.offset().top; 
     var obottom = clickZone.outerHeight() + otop; 

     $("#" + buttonId).mousemove(function (e) { 
      var x = e.pageX; 
      var y = e.pageY; 
      if (!(x < oleft || x > oright || y < otop || y > obottom)) { 
       inputFile.offset({ 
        top: y - 15, 
        left: x - 160 
       }); 
      } else { 
       inputFile.offset({ 
        top: -400, 
        left: -400 
       }); 
      } 
     }); 
    } 

    document.getElementById(dropZoneId).addEventListener("drop", function (e) { 
     $("#" + dropZoneId).removeClass(mouseOverClass); 
    }, true); 

    inputFile.on('change', function (e) { 
     $('#filename').html(""); 
     var fileNum = this.files.length, 
      initial = 0, 
      counter = 0, 
      fileNames = ""; 

     for (initial; initial < fileNum; initial++) { 
      counter = counter + 1; 
      fileNames += this.files[initial].name + '&nbsp;'; 
     } 
     if(fileNum > 1) 
      fileNames = 'Files selected...'; 
     else 
      fileNames = this.files[0].name + '&nbsp;'; 

     $('#filename').append('<span class="fa-stack fa-lg"><i class="fa fa-file fa-stack-1x "></i><strong class="fa-stack-1x" style="color:#FFF; font-size:12px; margin-top:2px;">'+ fileNum + '</strong></span><span">' + fileNames + '</span>&nbsp;<span class="fa fa-times-circle fa-lg closeBtn" title="remove"></span><br>'); 

     // add remove event 
     $('#filename').find('.closeBtn').click(function(){ 
      $('#filename').empty(); 
      inputFile.val(''); 
     }); 
     ///End change 
    }); 

}) 
+0

其實你的代碼幾乎可以工作,但在UI中,結果是當你刪除css部分的''#drop-zone input''時,你會看到輸入文件在隊列在按鈕中四處流動,並且當您導入一個或多個文件時,將其刪除,隊列中的文件將保留在後端,但仍然是它們的文件。 –

+0

我不認爲有可能在元素中編輯選定文件的文件數組。這是一種安全風險,所以瀏覽器不允許這樣做。 – Padhraic

+0

正如你可以從這個JsFiddle看到的,你不能在input.files上調用splice。 http://jsfiddle.net/vpmjqn7u/4/這正是我想要做的。腳本到達拼接時失敗。而不是在每個文件名後面都顯示一個刪除圖標,只要用戶點擊這個名字就可以重新選擇文件。 http://jsfiddle.net/0GiS0/Yvgc2/ – Padhraic

0
$(function() { 

    var dropZoneId = "drop-zone"; 
    var buttonId = "clickHere"; 
    var mouseOverClass = "mouse-over"; 

    var dropZone = $("#" + dropZoneId); 
    var ooleft = dropZone.offset().left; 
    var ooright = dropZone.outerWidth() + ooleft; 
    var ootop = dropZone.offset().top; 
    var oobottom = dropZone.outerHeight() + ootop; 
    var inputFile = dropZone.find("input"); 

    var filesArr = []; 

    function showFiles() { 
    $('#filename').html(""); 
    var fileNum = filesArr.length; 
    for (var i = 0; i < fileNum; i++) { 

           objectURL = URL.createObjectURL(filesArr[i]); 

     $('#filename').append('<div><img title="'+filesArr[i].name+'" id="'+objectURL+'" src="'+objectURL+'" class="pre-visualizacao"><span class="fa-stack fa-lg"><i class="fa fa-file fa-stack-1x "></i><strong class="fa-stack-1x" style="color:#FFF; font-size:12px; margin-top:2px;">'+ i + '</strong></span> ' + filesArr[i].name + '&nbsp;&nbsp;<span class="closeBtn" title="Remover">X</span></div>'); 

     } 
    } 

    function addFiles(e) { 
    var tmp; 

    // transfer dropped content to temporary array 
    if (e.dataTransfer) { 
     tmp = e.dataTransfer.files; 
    } else if (e.target) { 
     tmp = e.target.files; 
    }   

    // Copy the file items into the array 
    for(var i = 0; i < tmp.length; i++) { 
     filesArr.push(tmp.item(i)); 
     //console.log(i); 
    } 

    // remove all contents from the input elemnent (reset it) 
    inputFile.wrap('<form>').closest('form').get(0).reset(); 
    inputFile.unwrap(); 

    showFiles(); 
    }  

    document.getElementById(dropZoneId).addEventListener("dragover", function (e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    dropZone.addClass(mouseOverClass); 
    var x = e.pageX; 
    var y = e.pageY; 

    if (!(x < ooleft || x > ooright || y < ootop || y > oobottom)) { 
     inputFile.offset({ 
      top: y - 15, 
      left: x - 100 
     }); 
    } else { 
     inputFile.offset({ 
      top: -400, 
      left: -400 
     }); 
    } 
    }, true); 

    if (buttonId != "") { 
    var clickZone = $("#" + buttonId); 

    var oleft = clickZone.offset().left; 
    var oright = clickZone.outerWidth() + oleft; 
    var otop = clickZone.offset().top; 
    var obottom = clickZone.outerHeight() + otop; 

    $("#" + buttonId).mousemove(function (e) { 
     var x = e.pageX; 
     var y = e.pageY; 
     if (!(x < oleft || x > oright || y < otop || y > obottom)) { 
      inputFile.offset({ 
       top: y - 15, 
       left: x - 160 
      }); 
     } else { 
      inputFile.offset({ 
       top: -400, 
       left: -400 
      }); 
     } 
    }); 
    } 
    document.getElementById(dropZoneId).addEventListener("drop", function (e) { 
    $("#" + dropZoneId).removeClass(mouseOverClass); 
    addFiles(e); 
    }, true); 

    /*inputFile.on('change', function(e) { 
    addFiles(e); 
    });*/ 

    $('#filename').on('click', '.closeBtn', function(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 

    var divElem = $(this).parent(); 
    var index = $('#filename').find('div').index(divElem); 
    if (index !== -1) { 
     $('#filename')[0].removeChild(divElem[0]); 
     filesArr.slice(index,1); 
    } 
    }); 
    inputFile.on('change', function(e) { 
    $('#filename').html(""); 
    var fileNum = this.files.length, 
     initial = 0, 
     counter = 0; 
    for (initial; initial < fileNum; initial++) { 
     counter = counter + 1; 
     objectURL = URL.createObjectURL(this.files[initial]); 
     $('#filename').append('<div><img title="'+this.files[initial].name+'" id="'+objectURL+'" src="'+objectURL+'" class="pre-visualizacao"><span class="fa-stack fa-lg"><i class="fa fa-file fa-stack-1x "></i><strong class="fa-stack-1x" style="color:#FFF; font-size:12px; margin-top:2px;">'+ counter + '</strong></span> ' + this.files[initial].name + '&nbsp;&nbsp;<span class="closeBtn" title="Remover">X</span></div>'); 
    } 
    }); 

});