图片预览插件小封装

根据最近项目需求写的一个图片预览小插件,需引入jq,(其实可以不用引入,但需要做修改)

html部分

            <div id="showBox"></div>
            <a href="javascript:;" id="btn">点击上传图片</a>
            <input id="btnHidden" type="file" style="display:none">

js部分

        function MyUploadImg(options) {
            var options = options || {}
            options.ImgType = ["gif", "jpeg", "jpg", "bmp", "png"];
            options.ErrMsg = "选择文件错误,图片类型必须是(gif,jpeg,jpg,bmp,png)中的一种";
            options.isPrevImg = false;
            this._init(options);
        }
        MyUploadImg.prototype = {
            constructor: MyUploadImg,
            _init: function (options) {
                var self = $(this)[0];
                self.options = options;
                var o = $('#' + self.options.id);
                self.showImg = $('<img/>')
                self.showImg.attr('id', 'img_' + self.options.id);
                self.showImg.attr('src', self.options.baseUrl)
                var imgW = options.width;
                var imgH = options.height;
                self.showImg.css({
                    'width': imgW,
                    'height': imgH
                });
                o.append(self.showImg)
                self.bindClick();
                self.bindChange();
            },
            bindClick: function () {
                var self = $(this)[0];
                var $btn = $('#' + self.options.btnId)
                $btn.on('click', function (e) {
                    e.preventDefault();
                    $('#' + self.options.hiddenBtnId).click();
                })
            },
            bindChange: function () {
                var self = $(this)[0];
                $('#' + self.options.hiddenBtnId).on('change', function () {
                    self.change($(this)[0].files[0])
                })
            },
            change: function (file) {
                var self = $(this)[0];
                if (file) {
                    if (!RegExp("\.(" + self.options.ImgType.join("|") + ")$", "i").test(file.type.toLowerCase())) {
                        alert(self.options.ErrMsg);
                        self.clear()
                        return false;
                    }
                    var url = $(this)[0].getObjectURL(file)
                    self.showImg.attr('src', url)
                    self.options.isPrevImg = true;
                }
            },
            getObjectURL: function (file) {
                var url = null;
                if (window.createObjectURL != undefined) {
                    url = window.createObjectURL(file);
                } else if (window.URL != undefined) {
                    url = window.URL.createObjectURL(file);
                } else if (window.webkitURL != undefined) {
                    url = window.webkitURL.createObjectURL(file);
                }
                return url;
            },
            clear:function(){
                console.log(1)
                var self = $(this)[0];
                $('#' + self.options.hiddenBtnId).val("");
                self.showImg.attr('src', self.options.baseUrl);
            }
        }

使用方法

            new MyUploadImg({
                id: "showBox",
                btnId: "btn",
                hiddenBtnId: "btnHidden",
                width: "200",
                height: "200",
                baseUrl: baseUrl
            });

 

posted @ 2018-09-01 14:55  chachanode  阅读(168)  评论(0编辑  收藏  举报