JavaScript实现清空(重置)文件类型INPUT元素值的方法


Posted in Javascript onNovember 17, 2016

本文实例讲述了JavaScript实现清空(重置)文件类型INPUT元素值的方法。分享给大家供大家参考,具体如下:

因为安全限制,脚本是不能随意设置其value值的,所以并不能像其它表单输入域那样用属性来设置使其重置。

重置一个文件域的值,归纳起来主要有 3 种方法。

本文分析这三种方法的浏览器兼容性以及优缺点,并给出一个比较完美的综合方案的代码和Demo。

重置文件域的三种方法:

1. 设置value属性为空。

对于IE11以上和其它较新的非IE的现代浏览器Chrome/Firefox/Opera...有效。

2. 克隆或创建一个新的文件输入元素进行替换。

利用createElement或者cloneNode克隆或创建一个新元素进行替换,适用于所有浏览器。缺点也很明显,就是替换后,将丢失原先绑定的事件监听器,并丢失一些自定义的expando属性。没有这个问题的情况下可以使用,不通用,我不建议使用这个方法。

3. 调用表单form元素的reset()方法。

form元素的reset()方法会重置表单内的所有输入元素,这并不是我们期望的,所以可以变通一下,创建一个新的form对象,将文件input元素放进去之后再reset,再把文件input元素取出来放回原处,这样就不会出现方法2的弊端了。

利用方法1和方法3结合,可以做到兼容所有浏览器。

JavaScript函数代码如下:

function clearInputFile(f){
  if(f.value){
    try{
      f.value = ''; //for IE11, latest Chrome/Firefox/Opera...
    }catch(err){
    }
    if(f.value){ //for IE5 ~ IE10
      var form = document.createElement('form'), ref = f.nextSibling, p = f.parentNode;
      form.appendChild(f);
      form.reset();
      p.insertBefore(f,ref);
    }
  }
}

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript prototype原型操作笔记
Dec 07 Javascript
Javascript实现的类似Google的Div拖动效果代码
Aug 09 Javascript
jQuery中jqGrid分页实现代码
Nov 04 Javascript
使用typeof方法判断undefined类型
Sep 09 Javascript
DOM 高级编程
May 06 Javascript
JS文件上传神器bootstrap fileinput详解
Jan 28 Javascript
详解react-webpack2-热模块替换[HMR]
Aug 03 Javascript
Angular实现表单验证功能
Nov 13 Javascript
微信小程序switch开关选择器使用详解
Jan 31 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
Mar 07 Javascript
使用rollup打包JS的方法步骤
Dec 05 Javascript
javascript自定义日期比较函数用法示例
Jul 22 Javascript
用Vue.js实现监听属性的变化
Nov 17 #Javascript
JS实现类似51job上的地区选择效果示例
Nov 17 #Javascript
JS实现的适合做faq或menu滑动效果示例
Nov 17 #Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
Nov 17 #Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
Nov 17 #Javascript
leaflet的开发入门教程
Nov 17 #Javascript
JavaScript中关于iframe滚动条的去除和保留
Nov 17 #Javascript
You might like
在线短消息收发的程序,不用数据库
2006/10/09 PHP
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
JavaScript学习笔记之数组的增、删、改、查
2016/03/23 Javascript
jQuery 实现图片的依次加载图片功能
2017/07/06 jQuery
原生js中ajax访问的实例详解
2017/09/19 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
JavaScript监听一个DOM元素大小变化
2020/04/26 Javascript
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
Javascript中window.name属性详解
2020/11/19 Javascript
[44:50]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 TNC vs VG
2018/04/02 DOTA
编程语言Python的发展史
2014/09/26 Python
Python3安装Pymongo详细步骤
2017/05/26 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
python多线程同步实例教程
2019/08/11 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
浅谈pandas dataframe对除数是零的处理
2020/07/20 Python
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
华为C++笔试题
2014/08/05 面试题
什么是反射
2012/03/17 面试题
感恩之星事迹材料
2014/05/03 职场文书
主题团日活动总结
2014/06/25 职场文书
售后服务质量承诺书
2015/04/29 职场文书
结婚主持人致辞
2015/07/28 职场文书
2016年八一建军节活动总结
2016/04/05 职场文书
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android
教你用python实现12306余票查询
2021/06/30 Python
Nginx HTTP跳转至HTTPS
2022/05/15 Servers