码迷,mamicode.com
首页 > Web开发 > 详细

上传文件——file标签深藏功与名

时间:2015-05-19 00:36:14      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

  在Html标签中,<input type="file"/>是被用来上传文件的,但是这哥们儿在不同的浏览器下各有一副嘴脸,怎一个“别扭”了得。一直想解决这个头疼的问题,最近在读了一篇博文之后,忽然有了思路。

  在上传文件时,<input type="file"/>是被放在一个form中,form既然要上传文件,一定是以post方式传输数据,enctype也要设置成multipart/form-data。如下:

<form id="uploadForm"  action="test.ashx" method="post" enctype="multipart/form-data">
 <input type="file" name="uploadFile" id="uploadFile" style="visibility:hidden;position:absolute;top:0px;width:0px"/>
</form>
<input type="button" value="上传" id="btn"/>

  既然file标签长得不好看,就不让它显示,本来想设置display属性,但是在苹果浏览器下没能实现上传,只好设置visibility为hidden,但这么一来,file标签就独占了空白的一块区域,所以又继续设置了后面三个属性。这样页面上就只有一个button按钮,此时只需要设置按钮点击时触发file标签的点击事件,而当选择完上传的文件之后,将触发file标签的onchange事件,只需要在此事件中提交form表单的数据即可。如下:

 

<script src="jquery-1.8.2.js"></script>
    <script type="text/javascript">
        $(function () {
            //按钮的点击事件
            $(‘#btn‘).click(function () {
                //触发file的点击事件
                $(‘#uploadFile‘).click();
            });
            //file的change事件
            $(‘#uploadFile‘).change(function () {
                //提交form表单的数据
                $(‘#uploadForm‘).submit();
            });
        });
    </script>

 

  当然,在提交数据时还可以使用AjaxForm实现异步提交,至于后台的操作,这里就不再赘述。

  file标签虽然被隐藏,但依然完成了它的工作,也算深藏功与名,而页面上那个孤零零的button就成了一个任人打扮的小姑娘。本人实在不擅于搞CSS这些东东,窃以为应该还有更好的方式实现这个效果,希望众位高手们可以不吝赐教。

 

上传文件——file标签深藏功与名

标签:

原文地址:http://www.cnblogs.com/wcfl/p/4513326.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!