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 相关文章推荐
Jquery 滑入滑出效果实现代码
Mar 27 Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
Jun 20 Javascript
在子窗口中关闭父窗口的一句代码
Oct 21 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
Aug 15 Javascript
使用text方法获取Html元素文本信息示例
Sep 01 Javascript
Javascript实现飞动广告效果的方法
May 25 Javascript
简介JavaScript中的unshift()方法的使用
Jun 09 Javascript
vue的基本用法与常见指令
Aug 15 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
Oct 26 Javascript
JS操作字符串转数字的常见方法示例
Oct 29 Javascript
vue制作抓娃娃机的示例代码
Apr 17 Javascript
OpenLayers3实现图层控件功能
Sep 25 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
php遍历类中包含的所有元素的方法
2015/05/12 PHP
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
node.js下LDAP查询实例分享
2015/09/30 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
jQuery插入节点和移动节点用法示例(insertAfter、insertBefore方法)
2016/09/08 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
浅谈struts1 & jquery form 文件异步上传
2017/05/25 jQuery
JS实现的简单拖拽购物车功能示例【附源码下载】
2018/01/03 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
node全局变量__dirname与__filename的区别
2019/01/14 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
ES6 十大特性简介
2020/12/09 Javascript
[02:57]DOTA2亚洲邀请赛 SECRET战队出场宣传片
2015/02/07 DOTA
在Django的模板中使用认证数据的方法
2015/07/23 Python
Python正则抓取网易新闻的方法示例
2017/04/21 Python
基于PyQt4和PySide实现输入对话框效果
2019/02/27 Python
10分钟用python搭建一个超好用的CMDB系统
2019/07/17 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
2019/11/25 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
房地产销售员的自我评价分享
2013/12/04 职场文书
团组织关系介绍信
2014/01/12 职场文书
股权转让协议范本
2014/12/07 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
素质教育学习心得体会
2016/01/19 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
介绍一下28个JS常用数组方法
2022/05/06 Javascript