javascript - 两段 jQuery 代码,但只执行了一段

标签 javascript jquery

我在 jQuery 中有两个函数。其中之一是从表单中查找图像扩展,另一个是获取图像尺寸,并在图像不够大时触发 alert()

两个函数在演示中都正确执行,但一起只执行了一个。仅执行扩展获取的部分。抱歉代码太长,但这是显示问题的唯一方法。

(function ($) {
    $.fn.checkFileType = function (options) {
        var defaults = {
            allowedExtensions: [],
            success: function () {},
            error: function () {}
        };
        options = $.extend(defaults, options);

        return this.each(function () {
            $(this).on('change', function () {
                var value = $(this).val(),
                    file = value.toLowerCase(),
                    extension = file.substring(file.lastIndexOf('.') + 1);

                if ($.inArray(extension, options.allowedExtensions) == -1) {
                    options.error();
                    $(this).focus();
                } else {
                    options.success();
                }
            });
        });
    };
})(jQuery);

$("#filput").on('change', function () {
    var fr = new FileReader;

    fr.onload = function () { // file is loaded
        var img = new Image;

        img.onload = function () {
            // image is loaded; sizes are available 
            var w = img.width
            if (w < 500) {
                alert("too small");
            } else {
                alert("big enough");
            }
        };
        img.src = fr.result;
    };
    fr.readAsDataURL(this.files[0]);
});

$(function () {
    $('#filput').checkFileType({
        allowedExtensions: ['jpg', 'jpeg', 'png'],
        error: function () {
            alert('error');
        }
    });
});

最佳答案

Only part where extentions is getting is executed

该代码由 $(function() { ... }); 包装因此,您可能应该将这两段代码放在那里:

$(function() {
    $("#filput").on('change', function () {
        var fr = new FileReader;
        // ...
    });

    $('#filput').checkFileType({
        // ...
    });
});

根据您的描述,在您的代码运行时输入元素还不存在;通过将两个代码段放入 DOMReady 事件处理程序中,您可以确保它存在。

关于javascript - 两段 jQuery 代码,但只执行了一段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21975680/

相关文章:

javascript - 输入类型 ="date"设置默认值到今天

javascript - 如何从服务器端更改客户端 javascript 的变量?

javascript - 我如何将我的媒体查询与 java 脚本集成以支持 IE 中的@media 查询?

javascript - JS RegExp 删除所有 HTML 标签及其内容?

jquery - 如何获取属性的复选框值

javascript - 添加两个侧边栏

javascript倒计时和更新数据库php

javascript - IE JavaScript "Message From Webpage"错误, "Checking If Value was Empty.."

javascript - 不同的宽度导致不同的浏览器 $ ("#div1").width()?

javascript - jquery - 从回调函数(在后请求中)返回值到其内部的函数中?