JS点击图片弹出文件选择框并覆盖原图功能的实现代码


Posted in Javascript onAugust 25, 2017

简单说下原理,把显示的图片的<img>标签 和上传文件的 <input> 标签放在同一个div下,设置<img>的大小和<input>的大小一样,<input> 设置透明度为0,用定位和设置优先级把input浮动在<img>上方,这样点击图片就能选择上传图片,选择完图片后获取图片地址,替换掉原来的默认图片就能实现覆盖原图功能。

js代码:

<script type="text/javascript" src="jquery1.8.3.min.js"></script> 
<script type="text/javascript"> 
 $(function() {   
  //建立一??可存取到?file的url 
  function getObjectURL(file) { 
   var url = null; 
   if (window.createObjectURL != undefined) { // basic 
    url = window.createObjectURL(file); 
   } else if (window.URL != undefined) { // mozilla(firefox) 
    url = window.URL.createObjectURL(file); 
   } else if (window.webkitURL != undefined) { // webkit or chrome 
    url = window.webkitURL.createObjectURL(file); 
   } 
   return url; 
  } 
  //获取点击的图片元素 
  var cdimg = $('.fileImgs1').children('img'); 
  //获取上传图片的 input 标签元素 
  var cdfile = $('.fileImgs1').children('input[type="file"]'); 
  //设置input 大小和图片一致 
  cdfile.css({'width':cdimg.css('width'),'height':cdimg.css('height')}); 
  //input透明度为0,定位,优先级比图片高 
  cdfile.css({'opacity':0,'position':'absolute','z-index':10}); 
  //判断input的图片文件改变则img的图片也替换为input选择的图片 
  cdfile.change(function() { 
    if (this.files && this.files[0]) { 
      var objUrl = getObjectURL(this.files[0]); 
      if (objUrl) { 
        $(this).siblings('img').attr("src", objUrl); 
      } 
    } 
  }); 
 }) 
</script>

HTML调用代码:

<body> 
<span style="white-space:pre"> </span><div class='fileImgs1'> 
    <input type="file" name='img4'> 
    <img src="getu1.png" style='width:145px;height:125px' alt=""> 
  </div> 
</body>

总结

以上所述是小编给大家介绍的JS点击图片弹出文件选择框并覆盖原图功能的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Ext.MessageBox工具类简介
Dec 10 Javascript
一个javascript图片阅览组件
Nov 09 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
Apr 14 Javascript
jquery实现右键菜单插件
Mar 29 Javascript
Bootstrap入门书籍之(一)排版
Feb 17 Javascript
谈一谈jQuery核心架构设计
Mar 28 Javascript
详解AngularJS脏检查机制及$timeout的妙用
Jun 19 Javascript
vue修改vue项目运行端口号的方法
Aug 04 Javascript
三种Webpack打包方式(小结)
Sep 19 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
Feb 01 Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
Mar 14 Javascript
layui实现form表单同时提交数据和文件的代码
Oct 25 Javascript
JavaScript数据类型的存储方法详解
Aug 25 #Javascript
使用JQ完成表格隔行换色的简单实例
Aug 25 #Javascript
Vue.js实现网格列表布局转换方法
Aug 25 #Javascript
Angular2 组件间通过@Input @Output通讯示例
Aug 24 #Javascript
Angular2 组件交互实例详解
Aug 24 #Javascript
使用jQuery实现页面定时弹出广告效果
Aug 24 #jQuery
探究react-native 源码的图片缓存问题
Aug 24 #Javascript
You might like
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
php中addslashes函数与sql防注入
2014/11/17 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
动态加载JS文件的三种方法
2013/11/08 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
js中scrollTop()方法和scroll()方法用法示例
2016/10/03 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
2017/07/24 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
详解vue中使用微信jssdk
2019/04/19 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
vue组件传值的实现方式小结【三种方式】
2020/02/05 Javascript
JS快速实现简单计算器
2020/04/08 Javascript
用python登录Dr.com思路以及代码分享
2014/06/25 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
基于Python pyecharts实现多种图例代码解析
2020/08/10 Python
zooplus意大利:在线宠物商店
2019/08/07 全球购物
英国领先的独立酒精饮料零售商:DrinkSupermarket
2021/01/13 全球购物
AJAX都有哪些有点和缺点
2012/11/03 面试题
行政经理岗位职责
2015/04/15 职场文书
2016年教师师德师风承诺书
2016/03/25 职场文书
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技