仅在调用return时退出函数

时间:2014-05-30 07:52:31

标签: javascript jquery

我有一个用于上传图片的输入文件。但是,我必须在上传之前验证其大小。以下是我试过的代码。

我有一个父函数,它调用方法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函数。

我需要的输出是真/假。也许我的代码本身的结构是不正确的。

我该如何解决这个问题?

1 个答案:

答案 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]);
};