当前位置: 首页 > news >正文

解决input file按钮要点击两次才弹出选择文件窗口

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在隐藏的文件输入框上调用click()方法

从Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)开始,你可以隐藏掉默认的文件输入框<input>元素,使用自定义的界面来充当打开文件选择对话框的按钮。实现起来很简单,你只需要使用样式display:none把原本的文件输入框隐藏掉,然后在需要的时候调用它的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);

这样,你就能任意改变这个文件选择按钮的样式了。

参考:https://developer.mozilla.org/zh-CN/docs/Using_files_from_web_applications#%E5%9C%A8%E9%9A%90%E8%97%8F%E7%9A%84%E6%96%87%E4%BB%B6%E8%BE%93%E5%85%A5%E6%A1%86%E4%B8%8A%E8%B0%83%E7%94%A8click%28%29%E6%96%B9%E6%B3%95

https://segmentfault.com/q/1010000004430586

方法二:

相信很多人都碰到过这个问题,文件上传控件透明后有的要点击两次才能弹出选择文件窗口,这里将将介绍如何避免要双击,只需要单击是可以实现的。 本来一直无心留意这个图片上传file按钮的BUG,因为有时候为了效果好看有时候我们要做点什么比如隐藏input模拟点击。FF可以chrome也可 以,唯独IE不行,报安全错误。所以还是得找方法解决,最终在某网站找到了,只是把input按钮的透明度改为0然后定位到最顶层,虽然透明,不表示没 有,这样点击上传时不影响效果又能实现所要的效果。真心不错。方法其实很简单。下面就介绍如何操作。

示例效果解图如下:

033543_9TjW_1260221.png

1、特别注意样式的写法。跟文件上传控件的参数

值得注意的是height:130%,font-size:100px,这样显示上传的文字就会变大,把点击的区域变大了,这样就可以单击可以了。样式如下:

.upload{width:100px;height:100px;line-height:100px;position:relative;border:1px solid #ddd;background:#f6f6f6;text-align:center;color:#333;overflow:hidden;}
#fileupload{position:absolute;bottom:0;left:0;font-size:100px;height:130%;width:100%;z-index:1;opacity:0;filter:alpha(opacity=0);}

2、完整代码如下:

<!DOCTYPE>  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
<title>file点击上传控件</title>  
<style>  
.upload{width:100px;height:100px;line-height:100px;position:relative;border:1px solid #ddd;background:#f6f6f6;text-align:center;color:#333;overflow:hidden;}  
#fileupload{position:absolute;bottom:0;left:0;font-size:100px;height:130%;width:100%;z-index:1;opacity:0;filter:alpha(opacity=0);}  
</style>  
</head>  
  
<body>  
<div class="upload">  
    点击上传  
    <input type="file" id="fileupload" size="100" />  
</div>  
</body>  
</html>


转载于:https://my.oschina.net/u/1260221/blog/672550

相关文章:

  • java-NIO
  • 转:对分库分表的一些想法
  • Web 图形验证码的校验1
  • Xcode快捷键--灰常实用的快捷键,以后编程快捷多了
  • 十条nmap常用的扫描命令
  • winPE系统下查看系统的IP及DNS地址
  • PC标签 phpcmsv9
  • YII 验证和消息
  • Postgresql数据库运维笔记
  • C#中箱子、扳手、闪电等含义
  • 转载: #pragma pack(push,1) #pragma pack(pop)
  • 【转】Android 防破解技术简介
  • Go 环境变量
  • 使用LocalBroadcastManager
  • exif信息对照
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【React系列】如何构建React应用程序
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • angular学习第一篇-----环境搭建
  • css的样式优先级
  • docker python 配置
  • JavaScript DOM 10 - 滚动
  • Java编程基础24——递归练习
  • PAT A1050
  • Web设计流程优化:网页效果图设计新思路
  • win10下安装mysql5.7
  • 大整数乘法-表格法
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 力扣(LeetCode)357
  • 使用Gradle第一次构建Java程序
  • 问题之ssh中Host key verification failed的解决
  • 我是如何设计 Upload 上传组件的
  • 做一名精致的JavaScripter 01:JavaScript简介
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​【已解决】npm install​卡主不动的情况
  • ​力扣解法汇总946-验证栈序列
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • !!java web学习笔记(一到五)
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (强烈推荐)移动端音视频从零到上手(上)
  • (转)shell调试方法
  • (转)程序员技术练级攻略
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .Net core 6.0 升8.0
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .net网站发布-允许更新此预编译站点
  • .Net中的设计模式——Factory Method模式
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • ::before和::after 常见的用法
  • ??myeclipse+tomcat
  • @ModelAttribute 注解