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中利用数组实现的循环队列代码
Jan 24 Javascript
如何使用Jquery获取Form表单中被选中的radio值
Aug 09 Javascript
在linux中使用包管理器安装node.js
Mar 13 Javascript
微信公众号支付H5调用支付解析
Nov 04 Javascript
详解ECharts使用心得总结
Dec 06 Javascript
Javascript Function.prototype.bind详细分析
Dec 29 Javascript
js输入框使用正则表达式校验输入内容的实例
Feb 12 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
Jan 11 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
Feb 28 Javascript
js实现秒表计时器
Dec 16 Javascript
npx create-react-app xxx创建项目报错的解决办法
Feb 17 Javascript
Vue自定义表单内容检查rules实例
Oct 30 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
cmd下运行php脚本
2008/11/25 PHP
PHP临时文件的安全性分析
2014/07/04 PHP
php实现四舍五入的方法小结
2015/03/03 PHP
php模板引擎技术简单实现
2016/03/15 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
javascript 函数式编程
2007/08/16 Javascript
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
JS正则表达式获取分组内容的方法详解
2013/11/15 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
JS匿名函数内部this指向问题详析
2019/05/10 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
vue设置全局访问接口API地址操作
2020/08/14 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
python 修改本地网络配置的方法
2019/08/14 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
Python爬虫爬取杭州24时温度并展示操作示例
2020/03/27 Python
Python用K-means聚类算法进行客户分群的实现
2020/08/23 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
Python中Yield的基本用法
2020/10/18 Python
《泉水》教学反思
2014/04/11 职场文书
电力安全事故反思
2014/04/27 职场文书
借名购房协议书范本
2014/10/06 职场文书
驳回起诉裁定书
2015/05/19 职场文书