四、jQuery. liveFakeFile核心代码:
关于如何创建jQuery插件,这里不做介绍,你可以去官方网站查看相关资料,代码如下:
(function($){ /* * @author denisdeng dexibe@gmail.com * blog www.denisdeng.com * $Version: 2009.8.11 1.0 * param reg[String] the format of image; * param defImg[String] the default image; * param btnText[String] the text of button; * param error[String] the error; * param imgText[String] the text when image do not show normaly; */
$.fn.liveFakeFile = function(o){ var settings = { reg:"png|jpe?g|gif|bmp", defImg:'img/defImage.gif', btnText:'浏览图片', blankImg: "img/blank.gif", error: '对不起,照片格式不正确,请重新选择', imgText:'你已经选择文件' }; var ie7 = $.browser.msie&&($.browser.version == "7.0"); var ie8 = $.browser.msie&&($.browser.version == "8.0"); var moz = $.browser.mozilla; return this.each(function(i,v){ if(o) settings = $.extend(settings, o); var wrap = $('<div class="fakefile"></div>'); var mes = $('<p class="mes"></p>'); var button = $('<button type="button"></button>'); var parent = $(this).parent('.fileinputs'); var imgWrap = $('<div class="imgWrap"></div>'); var defImg = $('<img src="'+settings.defImg+'" />'); imgWrap.append(defImg); button.append(settings.btnText); wrap.append(button); wrap.append(mes); imgWrap.insertBefore($(this)); $(this).attr("id",'file_'+i).appendTo(wrap); parent.append(wrap); $(this).bind('change',function(){ var val = $(this).val(); var imgName = val.slice(val.lastIndexOf("\\")+1); if(val.match(new RegExp(".(" + settings.reg + ")$", "i"))){ mes.empty(); //针对不能正常显示图片的浏览器 var img = $('<span></span>') .append(settings. imgText).append(imgName); //针对IE7或IE8浏览器 if(ie7 || ie8){ var img = $('<img src="'+ settings.blankImg+'" alt="" style="filter:progid:DXImageTransform.Microsoft. AlphaImageLoader(sizingMethod=\'scale\',src=\''+val+'\');" />'); } //针对火狐浏览器 if(moz){ var obj = document.getElementById('file_'+i); var img = $('<img src="'+obj.files[0].getAsDataURL()+'" alt="" width="75" />'); } imgWrap.empty().append(img); }else{ imgWrap.empty().append(defImg); mes.html(settings.error); } }); }) } })(jQuery)
注意,在上面的代码中,我先定义的是图片不能正常显示的情况,然后对不同浏览器做不同处理。使用起来很简单,在页面的头部引入jquery库和jQuery. liveFakeFile插件,假如页面中有一个class为”.fake”的文本框,只需调用一下代码即可:
<script type="text/javascript">; $(function(){ $(".fake").liveFakeFile(); }) </script>;
参数reg、defImg、btnText、blankImg、error、imgText主要用来方便自己定义。如你可以修改,然后调用:
<pre class="brush:javascript"> <script type="text/javascript">; $(function(){ var obj = { reg: "bmp", defImg:'img/yourImg.gif', btnText:' browse ', blankImg: "img/blank.gif", error: Sorry,the format of image is wrong, please select again!', imgText:'you have select the image:' } $(".fake").liveFakeFile(obj); }) </script>;
查看demo
五、相关资源:
注:所有转载者需标明原文地址,谢谢!
本文链接:http://www.blueidea.com/tech/web/2009/6944.asp
出处:Denis'Blog
责任编辑:bluehearts
上一页 使用jQuery改进文件上传控件 [2] 下一页
◎进入论坛网页制作、WEB标准化版块参加讨论,我还想发表评论。
|