html5系列:伪主动触发input:file的click事件
2015-12-03 16:17
501 查看
背景
从前,input:file是不能主动触发click事件的,据说是安全方面的考虑。因此,在美化input:file的时候就麻烦了,最通用的方案是,制作一个经过美化后的<button>,然后把input:file调整好尺寸,覆盖在
<button>上方,然后再设置
opacity: 0;,如此一来,用户看到的是
<button>,点击的却其实是input:file。
html5允许在click事件的callback中主动出发input:file的click事件
考虑一下下面的HTML:<input type="file" id="fileElem" multiple accept="image/*" style="display:none" onchange="handleFiles(this.files)"> <a href="#" id="fileSelect">Select some files</a>
为自定义的按钮绑定click事件:
var fileSelect = document.getElementById("fileSelect"), fileElem = document.getElementById("fileElem"); fileSelect.addEventListener("click", function (e) { if (fileElem) { fileElem.click(); } e.preventDefault(); // prevent navigation to "#" }, false);
如此一来,虽然input:file还是必要的,但就没必要说覆盖在
<button>上方,随便找个地方隐藏掉就好了,实在是方便了许多。
相关文章推荐
- html5系列:利用html5 file api读取本地文件(如图片、PDF等)
- html5系列:device's media capture mechanism(设备的媒体捕捉机制)——利用input:file调用设备的照相机/相册、摄像机、录音机
- html5页面中拨打电话和发短信方式
- html5 自定义文件上传
- h5的打开模式居然是这个样子的?
- html5 录音录像
- 使用Flexible实现手淘H5页面的终端适配
- Adobe 最终还是接受了Flash将寿终正寝的这个事实
- HTML5扩展之微数据与丰富网页摘要itemscope, itemtype, itemprop
- Flash 已死, Adobe 鼓励开发人员使用 HTML5
- HTML5绘制矩形
- [Web前端]梳理-HTML5.3.表单验证
- 商品竞猜html5
- notes_1(canvas)
- 用HTML5 canvas制作简单游戏
- html5利用websocket完成的推送功能
- HTML5拖放(drag and drop)与plupload的懒人上传
- CDH5.1使用CDH Manager安装
- WEB笔记-让HTML5向下兼容的策略
- 《HTML5与CSS3基础教程》第11、14-16、18章