我有一个用于上传图片的输入文件。但是,我必须在上传之前验证其大小。以下是我试过的代码。
我有一个父函数,它调用方法ValidateImageSize():
$('input:file').change(function (e) {
if (ValidateImageSize(this))
// do something
else
alert("wrong size");
});
和方法如下所示:
var ValidateImageSize = function (input) {
var reader = new FileReader();
reader.onload = function (e) {
var img = new Image();
img.onload = function (e) {
return this.height == 40 && this.width == 40 ? true : false;
}
img.src = e.target.result;
}
reader.readAsDataURL(input.files[0]);
};
方法ValidateImageSize()
始终返回' undefined
'它的父母,因为它还执行了onload函数。
我需要的输出是真/假。也许我的代码本身的结构是不正确的。
我该如何解决这个问题?
答案 0 :(得分:3)
使用callback
,如下所示:
var validation_callback = function(isValid) {
if (isValid) {
// do something
} else {
alert("wrong size");
}
};
$('input:file').change(function(e) {
ValidateImageSize(this, validation_callback);
});
var ValidateImageSize = function (input, callback) {
var reader = new FileReader();
reader.onload = function (e) {
var img = new Image();
img.onload = function (e) {
var isValid = this.height == 40 && this.width == 40 ? true : false;
callback(isValid);
};
img.src = e.target.result;
};
reader.readAsDataURL(input.files[0]);
};