问题:在上传图片时,常常不希望显示file标签,而只需要一个上传按钮,点击可选择要上传图片。选择后则立即上传。

解决方案:出于安全考虑,file不能通过程序触发click事件,也不能通过js给value赋值。一般的实现方式是通过css样式将file设置为透明,置于按钮上方。用户点击“上传”按钮时,实际点击的是file。

实现思路:以下是其中一种实现方式,在IE、FireFox及Google Chrome上都能正常显示。将file置于div中,div设置一张按钮图片作为背景,将file设置为透明,且file的浏览按钮铺满div。则用户点击div背景按钮时,实际是点击透明度为0的file。另file的onchange事件中实现了上传逻辑,则在用户选择图片后,就会触发file的onchange事件,实现立即上传。

关键代码:

css
 1         .uploadDiv
 2         {
 3             background: url(upload.jpg);
 4             height: 30px;
 5             width: 90px;
 6         }
 7         .uploadFile
 8         {
 9             opacity: 0;
10             filter: alpha(opacity=0);
11             width: 90px;
12             font-size: 40px;
13             height: 30px;
14         }

 

html
<img alt="" style="width: 90px; height: 90px;" src="noImg.jpg" id="img1" />
<div  class="uploadDiv">
    <input class="uploadFile" onchange="ajaxFileUpload(this)" id="filePic" name="filePic" class="file" type="file" />
</div>

 

显示效果:     

图片资源:

upload.jpg  noImg.jpg

posted on 2012-07-24 15:24  efwior  阅读(267)  评论(0)    收藏  举报