2014-06-09 1 views
0

미리보기 이미지가 표시 영역에서 제거되도록 성공적으로 가져 왔지만 실제로 배열에서 제거하지는 않습니다. 그것이 결코 선택되지 않은 것처럼 그것을 제거하는 방법을 알아낼 수 없다, 도와주세요!html5를 사용하여 이미지 미리보기를 위해 배열에서 객체를 제거하는 중첩

http://jsfiddle.net/ERZVC/

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

    if (parseInt($fileUpload.get(0).files.length) > 6 || count>5) { 
     alert("You can only upload a maximum of 5 files"); 
     count=count-parseInt($fileUpload.get(0).files.length); 
     evt.preventDefault(); 
     evt.stopPropagation(); 
     return false; 
    } 
    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" src="', e.target.result, '" title="', escape(theFile.name), '"/><span class="remove_img_preview"></span>'].join(''); 
       document.getElementById('list').insertBefore(span, null); 
      }; 
     })(f); 

     reader.readAsDataURL(f); 
    } 
} 

$('#files').change(function(evt){ 
    handleFileSelect(evt); 
}); 

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

HTML 여기

<input type="file" id="files" name="image_file_arr[]" multiple> 
<br><output id="list"></output> 
+0

의 중복 가능성 http://stackoverflow.com/questions/24470379/clear-an-image-preview-file-that-was -quared-from-jquery) – tftd

답변

0

fiddle는 갱신된다.

유일한 실수는 파일 제거시 카운터를 줄이지 않았다는 것입니다.

감사합니다.

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

    if (parseInt($fileUpload.get(0).files.length) > 6 || count>5) { 
     alert("You can only upload a maximum of 5 files"); 
     count=count-parseInt($fileUpload.get(0).files.length); 
     evt.preventDefault(); 
     evt.stopPropagation(); 
     return false; 
    } 
    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" src="', e.target.result, '" title="', escape(theFile.name), '"/><span class="remove_img_preview"></span>'].join(''); 
       document.getElementById('list').insertBefore(span, null); 
      }; 
     })(f); 

     reader.readAsDataURL(f); 
    } 
} 

$('#files').change(function(evt){ 
    handleFileSelect(evt); 
}); 

$('#list').on('click', '.remove_img_preview',function() { 
    $(this).parent('span').remove(); 
    count--; 
}); 
[jQuery로 배열에서 삭제 삭제 화상 프리뷰 파일 (
+0

멋진! 이것은 preivew에서 작동합니다. 이제 4 개의 이미지를 업로드 한 다음 2를 제거하면 제출시 미리보기에서 2 개의 이미지 만 업로드합니까? – Gadgetster

+0

그 때문에 자바 스크립트의 splice 메서드를 사용하여 제거 버튼을 클릭하면 파일 배열에서 해당 파일을 제거해야합니다. 다음은 참조 링크입니다 : http://www.w3schools.com/jsref/jsref_splice.asp. 또한 alert (JSON.stringify (files))를 사용하여 파일 배열을 볼 수 있습니다. var files = evt.target.files 뒤에이 줄을 넣으십시오. 귀하의 코드에 업로드 된 파일의 목록을 볼 수 있습니다. 감사합니다 –

+0

파일을 본 후 제거 할 클릭 한 것을 제거 할 수 있도록 코드에이 두 가지를 넣는 방법을 보여 주시겠습니까? – Gadgetster

관련 문제