将html中的<input type="file" />(选择文件) 元素隐藏,并通过其它方式触发点击。

file input的默认外观实在不好看,所以我们要搞定它。。

1. 首先,我们把file input放入一个label,并且将这个label显示为一定的宽高,比如显示为(bootstrap)btn的样式;

2. 为此input增加样式,内联或css文件内写都可以:style="left:-9999px;position:absolute;"

3. 在label内增加文本(作为label btn的显示文本),比如下方示例中的span;

<label id="realBtn" class="btn btn-info">
     <input type="file" id="fileInput1" name="file" class="mFileInput" style="left:-9999px;position:absolute;">
     <span>导入EXCEL数据</span>
</label>

如此即可,无需再添加任何js函数,就能让这个label在被点击时,与file input点击产生同样的效果。这是label标签的一个bug,但是这个bug的通用性极好,连ie7都没问题。

我也查过网上的一些方案,我建议大家不要使用triger等模拟点击的方式触发file input的点击,从安全角度讲,js是不建议这样做的,所以兼容性完全没有保障,再就是,使用透明file input在指定区域悬挂遮盖鼠标的方式,因为要用js处理,所以在性能上会有问题,同时,经我测试,在快速操作时,还是会暴露出一些bug的,很挠头,只有我在本文中所写的方法,才是我认为最上乘的方案,有更好的方案,欢迎大家的指点。

如果需要显示文件名,就在file input的change事件里取它的value就行了。

但是这里就有另一个问题了,就是选择相同的文件不触发change,而且file input的value的清空方法,各浏览器兼容性并不好,但是这个与本贴主题关系不大,我在另一贴中写一写我的解决方法:http://www.cnblogs.com/laozuan/p/4660405.html

时间: 2024-10-08 04:05:58

将html中的<input type="file" />(选择文件) 元素隐藏,并通过其它方式触发点击。的相关文章

input type=file 选择文件路径获取方法

input file上传按钮选择文件后的value是无法直接获取到的,本文借用js方法获取file选中文件的物理路径和文件名 代码如下: DOM结构: <input type="text" id="textfield" /><br/> <a class="a-upload"> <input type="file" name="file" id="fileF

js 获取input type=&quot;file&quot; 选择的文件大小、文件名称、上次修改时间、类型等信息

<html xmlns="http://www.w3.org/1999/xhtml">   <head runat="server">   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   <title></title>   </head>   <body&

javascript input type=file 文件上传

在JS中,input type=file 是常用的文件上传API,但感觉W3C说的不是很清楚,同时网上的资料也比较乱. 由于做微信开发,所以网页打算尽量少用第三方库或者插件,以加快网页的加载速度.因为微信企业号本身想实现的功能也很纯粹,不需要太多乱七八糟的东西. 我这里只用了JQuery. 总结如下: 1.用户选择文件后,一般只显示一个fakepath,不会显示一个完整的文件目录.用$("input[type='file']")[0].files[0].name即可显示出文件名. 2.

HTML5学习笔记(2):input type file的特性

一. input type=file与文件上传 本文所说的input type=file指的是type类型是file的input元素,最简HTML代码如下: <input type=file> 但是,为了习惯,我们多写成: <input type="file"> 在HTML5出现之前(XHTML),我们的闭合规则则有些出入: <input type="file" /> 顾名思义,选择文件,并上传文件. 在HTML5还没有出现之前,

input type=file上传控件老问题

// 1.用INPUT控制上传文件时,点击INPUT控件出现文件选择框. // 2.如果在手机上使用时,一般不会出现这种较丑的 // 3.于是就自然想到将控件隐藏,然后用一个按钮代替,点击按钮时在函数里使用脚本触发INPUT控件的 // 4.结果发现无效,无法使用JS触发INPUT的控件.(在PC端有的浏览器可以,在手机浏览器中有的安卓机可以,苹果机不行) <form> <input name="photos" type="file" accept

处理同一页面中借助form+input[type=&quot;file&quot;]上传图片出现的input无法清空问题

今天下午帮同事改了这样一个bug: 在一个页面中对多张图进行上传时,由于input的value无法情况的问题,导致每次选完图片后,都跟第一张图片一样,无法出现如下效果: 百度了下思路:先将input取到,然后放到一个临时form里面清空,最后删掉form. 代码如下: 首先是生成图片选择和显示部分的绑定代码: var img_tmp = '<tr><td><input type="text" name="code" value=&quo

html中,文件上传时使用的&lt;input type=&quot;file&quot;&gt;的样式自定义

Web页面中,在需要上传文件时基本都会用到<input type="file">元素,它的默认样式: chrome下: IE下: 不管是上面哪种,样式都比较简单,和很多网页的风格都不太协调. 根据用户的需求,设计风格,改变其显示样式的场合就比较多了. 如果,要像下面一样做一个bootstrap风格的上传按钮该如何实现. 搭建上传按钮所需的基本元素 <span class=""> <span>上传</span> <

input type file 获得用户选择的一般方法

<script type="text/javascript"> function ShowExcelFile() { var tempName = $("#selectOriginFile_CertificationTemplateSelect").val(); if (tempName != null && tempName != "") { window.open("/home/ReadExcelFile

文件上传按钮input[type=&quot;file&quot;]按钮美化时在IE8中的bug【兼容至IE8】

首先看一下完成后的效果,鼠标移入可改变为手指的效果. 在此就不加图标了 <label class="file-upload"> <span>上传附件</span> <input type="file" name=""> </label> 在IE8中需要将input透明后还不能完全达到效果,还需要将字体设大一些,撑开input,这是IE自带的兼容问题. .file-upload{ disp