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读取ASP设定的COOKIE
Nov 24 Javascript
jQuery 工具函数学习资料
Apr 29 Javascript
javascript自启动函数的问题探讨
Oct 05 Javascript
Javascript中查找不以XX字符结尾的单词示例代码
Oct 15 Javascript
JavaScript实现的多种鼠标拖放效果
Nov 03 Javascript
JS使用JSON作为参数实例分析
Jun 23 Javascript
AngularJS实现网站换肤实例
Feb 19 Javascript
原生js封装自定义滚动条
Mar 24 Javascript
实现单层json按照key字母顺序排序的示例
Dec 06 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
Nov 20 Javascript
H5实现手机拍照和选择上传功能
Dec 18 Javascript
vue中 v-for循环的用法详解
Feb 19 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之短标签开启设置
2013/06/17 PHP
如何解决CI框架的Disallowed Key Characters错误提示
2013/07/05 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
javascript中的location用法简单介绍
2007/03/07 Javascript
JavaScript面向对象编程
2008/03/02 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
jquery实现预览提交的表单代码分享
2014/05/21 Javascript
jQuery 获取多选框的值及多选框中文的函数
2016/05/16 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
Vue.js项目模板搭建图文教程
2017/09/20 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
关于微信小程序登录的那些事
2019/01/08 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
[00:12]DAC2018 天才少年转战三号位,他的SOLO是否仍如昔日般强大?
2018/04/06 DOTA
Python 的 with 语句详解
2014/06/13 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
2016/11/19 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
超市促销实习自我鉴定
2013/09/23 职场文书
成功的餐厅经营创业计划书
2014/01/15 职场文书
班级道德讲堂实施方案
2014/02/24 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
十岁生日答谢词
2015/01/05 职场文书
健康证明
2015/06/19 职场文书
Python移位密码、仿射变换解密实例代码
2021/06/27 Python
Node实现搜索框进行模糊查询
2021/06/28 Javascript
Java 超详细讲解hashCode方法
2022/04/07 Java/Android