3 回答
TA贡献1877条经验 获得超6个赞
在这种情况下,使用Deferred Object并返回promise 是很有用的:
function readImage(inputElement) {
var deferred = $.Deferred();
var files = inputElement.get(0).files;
if (files && files[0]) {
var fr= new FileReader();
fr.onload = function(e) {
deferred.resolve(e.target.result);
};
fr.readAsDataURL( files[0] );
} else {
deferred.resolve(undefined);
}
return deferred.promise();
}
以上功能可以通过这种方式使用:
var inputElement = $("input[name=file]");
readImage(inputElement).done(function(base64Data){
alert(base64Data);
});
或您的情况:
$(input).on('change',function(){
readImage($(this)).done(function(base64Data){ alert(base64Data); });
});
添加回答
举报