在HTML5中输入文件的onchange事件后执行脚本

时间:2016-09-24 03:43:55

标签: javascript jquery html5 asynchronous promise

我想知道在输入文件的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'); })?

目的是创建一个添加到输入文件的文件集合,并在某个不同时刻显示或对该集合执行另一项操作。我想分开责任。

更新

我重新提出了我的问题,但我不知道是否应删除此问题并创建另一个问题,或者只是在此处添加。我将继续这里,如果管理员要求删除或创建另一个问题,我会这样做。

我走了这么远,上面的问题无处可去。我想链接这个

jsfiddle

&#13;
&#13;
var reader = new FileReader();

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

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

function completeIntroduction(){
  alert("world");
}
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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.
                }
            }