javascript - 仅当调用 return 时才退出函数

标签 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 函数。

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

我该如何解决这个问题?

最佳答案

使用回调,如下所示:

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

关于javascript - 仅当调用 return 时才退出函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23949631/

相关文章:

javascript - Ajax POST 到 PHP - 如何回复?

javascript - jsTree选择独立于层次结构的复选框

Javascript:如何调整我的去抖功能以采用 IF 条件?

javascript - Vuex 突变 mutate 不 react

javascript - 在 div 加载到 dom 后,在 div 上附加一个按钮

jquery - 使用 JQuery 单击特定的提交按钮

javascript - Jquery 移动底部导航栏

java.sql.Date 的 JavaScript 正则表达式

javascript - Google MAP API V3 无法清除之前的多条路线历史记录

javascript - 带 ID 的 CallAjax