图片上传jQuery插件(兼容IE8)
图片上传jQuery插件(兼容IE8)
html
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>上传图片</title> 6 <link rel="stylesheet" href="uploadImg.css" /> 7 </head> 8 <body> 9 <!--上传图片容器 start--> 10 <div class="picBox"></div> 11 <!--上传图片容器 end--> 12 13 <script src="http://apps.bdimg.com/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script> 14 <script src="uploadImg.js" type="text/javascript"></script> 15 <script type="text/javascript"> 16 $(".picBox").uploadImg({ 17 "picNum": 1,//上传图片张数 18 "width": 200,//图片宽度 19 "height": 100//图片高度 20 }); 21 </script> 22 </body> 23 </html>
css
1 .fileInput{ 2 display: block; 3 height:1px; 4 overflow: hidden; 5 opacity: 0; 6 filter:alpha(opacity=0); 7 } 8 .previewBox{ 9 margin:15px 0; 10 } 11 .previewBox img{ 12 margin-right:10px; 13 } 14 .uploadBtn{ 15 border:1px solid #eee; 16 background: #fff; 17 color:#666; 18 font-size: 16px; 19 line-height: 1.6; 20 padding:6px 15px; 21 }
js
1 /* 2 *上传图片并本地预览插件 3 *兼容IE8 4 *obj ----上传图片容器 5 *picNum ----上传图片的张数 6 *width ----图片宽度 7 *height ----图片宽度 8 */ 9 (function($) { 10 // 构造函数 11 function UploadImg(obj,opt) { 12 debugger; 13 this.obj = obj; 14 this.$obj = $(obj); 15 this.defaultOpt = { 16 "picNum": 1, 17 "width": 100, 18 "height": 100 19 }; 20 this.num = 0; 21 this.options = $.extend({},this.defaultOpt,opt); 22 this.init(); 23 }; 24 // 初始化html 25 UploadImg.prototype.init = function() { 26 var html = '<input type="file" class="fileInput">' 27 +'<div><button type="button" class="uploadBtn">上传图片</button></div>' 28 +'<div class="previewBox"></div>'; 29 this.$obj.append($(html)); 30 this.bindEvent(); 31 } 32 //绑定事件 33 UploadImg.prototype.bindEvent = function() { 34 var self = this; 35 this.$obj.on("click.choose",".uploadBtn",function() { 36 $(".fileInput").trigger("click"); 37 }); 38 $(".fileInput").on("change.upload",function() { 39 self.operationImg(this); 40 }); 41 this.$obj.off(".choose,.upload"); 42 } 43 //检查图片格式 44 UploadImg.prototype.isImg = function(url) { 45 var result = /.+\.(jpg|png|jpeg|gif)$/.test(url); 46 if(!result) { 47 alert("您选择的图片格式有误,请重新选择"); 48 return false; 49 } else { 50 return true; 51 } 52 }, 53 //添加预览图片到页面上 54 UploadImg.prototype.addImgHtml = function(url) { 55 if(this.options.picNum == 1) { 56 if($(".previewBox")) { 57 $(".previewBox").html("<img src="+ url +" width="+ this.options.width +" height="+ this.options.height +">"); 58 } 59 } else { 60 if($(".previewBox") && this.num < this.options.picNum) { 61 $(".previewBox").append("<img src="+ url +" width="+ this.options.width +" height="+ this.options.height +">"); 62 this.num++; 63 } 64 } 65 }, 66 //兼容IE处理 67 UploadImg.prototype.previewImgIE = function(obj) { 68 obj.select(); 69 $(obj).blur(); 70 if(document.selection) { 71 var url = document.selection.createRange().text; 72 if(this.isImg(url)) { 73 var imgWrap = "<div class='imgWrap'></div>"; 74 if(this.options.picNum == 1) { 75 $(".previewBox").html($(imgWrap)); 76 } else if(this.options.picNum > 1 && this.num < this.options.picNum) { 77 $(".previewBox").append($(imgWrap)); 78 this.num++; 79 } else { 80 return; 81 }; 82 $(".imgWrap").css({ 83 "width":this.options.width, 84 "height":this.options.height, 85 "display":"inline-block", 86 "margin-right":"10px", 87 "*display":"inline", 88 "*zoom":1 89 }); 90 $(".imgWrap:last").css("filter","progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod = scale,src=\""+url+"\")"); 91 } 92 } 93 }, 94 //正常处理 95 UploadImg.prototype.previewImg = function(obj) { 96 var file = obj.files[0]; 97 var self = this; 98 if(this.isImg(file.name)) { 99 var reader = new FileReader(); 100 reader.onload = function(evt) { 101 self.addImgHtml(evt.target.result); 102 }; 103 reader.readAsDataURL(file); 104 } else { 105 alert("您输入的图片格式有误,请重新输入"); 106 return false; 107 } 108 }; 109 //上传图片操作; 110 UploadImg.prototype.operationImg = function(fileObj) { 111 if(fileObj.files && fileObj.files[0]) { 112 //html5 files API 113 this.previewImg(fileObj); 114 } else { 115 //兼容IE 116 this.previewImgIE(fileObj); 117 } 118 } 119 //绑定插件 120 $.fn.uploadImg= function(options) { 121 return this.each(function() { 122 new UploadImg(this,options); 123 }); 124 } 125 })(jQuery);
积少成多,总有一天会成为汪洋大海!