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笔试题目附答案@20081025_jb51.net
Oct 26 Javascript
Node.js实现简单聊天服务器
Jun 20 Javascript
js实现jquery的offset()方法实例
Jan 10 Javascript
jQuery实现鼠标点击弹出渐变层的方法
Jul 09 Javascript
jQuery文字横向滚动效果的实现代码
May 31 Javascript
jQuery双向列表选择器DIV模拟版
Nov 01 Javascript
JavaScript 总结几个提高性能知识点(推荐)
Feb 20 Javascript
JS实现移动端触屏拖拽功能
Jul 31 Javascript
自己动手封装一个React Native多级联动
Sep 19 Javascript
使用JavaScript解析URL的方法示例
Mar 01 Javascript
使用express获取微信小程序二维码小记
May 21 Javascript
微信小程序实现限制用户转发功能的实例代码
Feb 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
PHP set_error_handler()函数使用详解(示例)
2013/11/12 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
浅谈php函数serialize()与unserialize()的使用方法
2014/08/19 PHP
JavaScript与HTML结合的基本使用方法整理
2015/10/12 PHP
自制PHP框架之设计模式
2017/05/07 PHP
记录几个javascript有关的小细节
2007/04/02 Javascript
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
wxPython中listbox用法实例详解
2015/06/01 Python
Python实现京东秒杀功能代码
2019/05/16 Python
Python中求对数方法总结
2020/03/10 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
2020/05/18 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
美国眼镜在线零售商:Dualens
2019/12/07 全球购物
焊接专业毕业生求职信
2013/10/01 职场文书
毕业生多媒体设计求职信
2013/10/12 职场文书
我的网上商城创业计划书
2013/12/26 职场文书
社区优秀志愿者材料
2014/02/02 职场文书
全国文明单位申报材料
2014/05/31 职场文书
热情服务标语
2014/10/07 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
go语言-在mac下brew升级golang
2021/04/25 Golang
django 认证类配置实现
2021/11/11 Python
python获取字符串中的email
2022/03/31 Python