2016-09-24 75 views
0

我想知道在輸入文件的onchange事件完成之後是否可以執行腳本?如果是這樣,怎麼樣?在HTML5輸入文件的onchange事件之後執行腳本

我很新的承諾,但我想知道,如果可以做到這一點,專門爲輸入文件

<input type="file" id="myInput" multiple /> 
var inputControl = $('#myInput'); 
inputControl.on('change', function(e) { //Do something }); //<--here call a script but only after onchanged finished 
//inputControl.on('change', function(e) { //Do something }).then(function(){ alert('later'); })? 

的目的是創建添加到輸入文件,並在一些文件的集合不同的時刻顯示或做與該集合的另一件事。我想分開責任。

UPDATE

我重新制定我的問題,但我不知道是否應該刪除這個問題,並創建另一個或者只是添加在這裏。我會在這裏繼續,如果管理員要求刪除或創建另一個問題,我會做。

我走得這麼遠,無法與上面的問題。我想這個鏈條

jsfiddle

var reader = new FileReader(); 
 

 
reader.onload = function(event) { \t  
 
    alert(event.target.result); 
 
} 
 
.then(completeIntroduction); // <--- Here execute a script after the onload ended 
 

 
reader.readAsText(new Blob(["hello "])); 
 

 
function completeIntroduction(){ 
 
    alert("world"); 
 
}

+0

更改事件發生在客戶選擇文件/ s和filedialog關閉後。請擴展你的想法。 – toto

+0

是的,我知道。當用戶選擇所有文件並關閉對話框時,我只想在onc​​hange引發時創建這些文件的集合,然後如果有必要鏈接另一個函數以顯示這些文件或者稍後。我想在onc​​hange或稍後的階段重新使用文件的顯示。 –

+0

承諾可能不是你需要的工具。您可以隨時在「Do Something」代碼末尾發送自定義事件代碼 –

回答

1

這怎麼能上改變輸入聽

<input id="myInput" type="file"> 

<script src="https://code.jquery.com/jquery-3.1.0.min.js"></script> 

<script> 
var inputControl = $('#myInput'); 
inputControl.on('change', function(e) { 
    alert(this.value); 
}); 
inputControl.on('change', function(e) { 
    setTimeout(function(obj) 
    { 
    alert(obj.value); 
    },500, this); 
}); 
</script> 
+0

感謝您的回答。我正在專門討論類型文件的輸入。我更新了我的問題。 onchange事件結束後的腳本。 –

+0

好吧,我更新了代碼,這是工作,但它不是直接的方式,你會給500毫秒的第一個代碼執行,然後開始執行第二部分,如果你可以從第一部分回調它會更好 –

+0

setTimeout 0足以確保更改事件處理程序內的任何同步代碼已完成 –

0

小想法:

  var inputControl = $('#myInput'); 
      //Store Files in array object. 
      var files = []; 

      inputControl.bind('change', function (e) { 
       files.push($(this)); 
       window.setTimeout(function(){ 
        showAllSelectedFiles(); 
       },1000); 
      }); 

      function showAllSelectedFiles(){ 
       for (var i=0; i < files.length; i++){ 
        var file = files[i]; 
        var name = file.val(); 
        //Your code here. 
       } 
      } 
相關問題