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 相关文章推荐
看了就知道什么是JSON
Dec 09 Javascript
ie 调试javascript的工具
Apr 29 Javascript
Jquery实现弹出层分享微博插件具备动画效果
Apr 03 Javascript
jquery 滚动条事件简单实例
Jul 12 Javascript
js中匿名函数的创建与调用方法分析
Dec 19 Javascript
js使用心得分享
Jan 13 Javascript
JS处理json日期格式化问题
Oct 01 Javascript
javascript实现禁止复制网页内容汇总
Dec 30 Javascript
jQuery EasyUI 页面加载等待及页面等待层
Feb 06 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
Aug 28 Javascript
vue router+vuex实现首页登录验证判断逻辑
May 17 Javascript
微信小程序实现上拉加载功能
Nov 20 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
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
PHP伪静态写法附代码
2008/06/20 PHP
一个很不错的PHP翻页类
2009/06/01 PHP
基于php权限分配的实现代码
2013/04/28 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
php实现zip文件解压操作
2015/11/03 PHP
深入解析PHP的Yii框架中的缓存功能
2016/03/29 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
用js实现随机返回数组的一个元素
2007/08/13 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
JQuery 确定css方框模型(盒模型Box Model)
2010/01/22 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
jquery+javascript编写国籍控件
2015/02/12 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
javascript中apply、call和bind的使用区别
2016/04/05 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
node.js cookie-parser之parser.js
2016/06/06 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
Python中的time模块与datetime模块用法总结
2016/06/30 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
python实现tail -f 功能
2020/01/17 Python
Python实现自动签到脚本功能
2020/08/20 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
瑞典在互联网上最大的宠物商店:Animail
2020/10/31 全球购物
营业员实习自我鉴定
2013/12/07 职场文书
毕业实习个人鉴定范文
2013/12/10 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
授权委托书
2015/01/28 职场文书
小学生家长意见
2015/06/03 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书
springboot使用Redis作缓存使用入门教程
2021/07/25 Redis
mysql 体系结构和存储引擎介绍
2022/05/06 MySQL
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS