2014-05-19 113 views
1

我試圖做一個更改事件觸發每次文件輸入更改, 現在我試圖清除值,每次它的工作,但第一次,但當用戶更改文件字段readURL(輸入)不運行的secound時間。爲什麼?.change事件只是第一次啓動

HTML

<input type='file' id="imgInp" onclick="readURL(input)" /> 

的JavaScript

$("#imgInp").change(function(){ 
      readURL(this); 
      ClearFileUpload(); 
    }); 

function readURL(input) { 
     if (input.files && input.files[0]) { 
     var reader = new FileReader(); 
     ClearFileUpload(); 
     reader.onload = function (e) { 
     photo.innerHTML='<img src="' + e.target.result + '" width="400" />'; 
     } 

     reader.readAsDataURL(input.files[0]); 

     } 
    } 


function ClearFileUpload() { 
    document.getElementById("photo").innerHTML=""; 
    var photo = document.getElementById('photo'); 
    var photoinput = document.getElementById('imgInp'); 
    if (photoinput != null) { 
     document.getElementById('imgInp').outerHTML = photoinput.outerHTML; 
    } 
    document.getElementById("name").innerHTML=""; 
} 

我已經試過。對( '輸入'),但這不火,

回答

1

你需要event delegation爲你改變DOM:

活動委託允許我們將一個事件監聽器附加到一個父元素,該元素將針對與選擇器匹配的所有後代觸發,無論這些後代是現在存在還是將來添加。

$(document).on('change','#imgInp',function(){ 
     readURL(this); 
     ClearFileUpload(); 
}); 
+0

感謝那些偉大的工作!!!! – user3637210

+0

@ user3637210:很高興它有幫助 –