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 UI 使用心得及技巧
Oct 10 Javascript
js获取url参数代码实例分享(JS操作URL)
Dec 13 Javascript
用unescape反编码得出汉字示例
Apr 24 Javascript
jQuery 隐藏和显示 input 默认值示例
Jun 03 Javascript
jQuery中on()方法用法实例详解
Feb 06 Javascript
高效利用Angular中内置服务$http、$location等
Mar 22 Javascript
javascript中this关键字详解
Dec 12 Javascript
JavaScript cookie详解及简单实例应用
Dec 31 Javascript
vue.js中过滤器的使用教程
Jun 08 Javascript
在vue中使用jointjs的方法
Mar 24 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
Sep 20 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
Sep 26 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
西德产收音机
2021/03/01 无线电
PHP网站提速三大“软”招
2006/10/09 PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
2010/10/12 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
2012/02/22 PHP
比较简单的百度网盘文件直链PHP代码
2013/03/24 PHP
CI框架常用方法小结
2016/05/17 PHP
PHP正则表达式笔记与实例详解
2019/05/09 PHP
jQuery的链式调用浅析
2010/12/03 Javascript
JQuery里选择超链接的实现代码
2011/05/22 Javascript
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
javascript实现很浪漫的气泡冒出特效
2020/09/05 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
2019/05/07 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
2020/01/21 Javascript
vscode 插件开发 + vue的操作方法
2020/06/05 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
python生成验证码图片代码分享
2016/01/28 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
Python实现自动签到脚本功能
2020/08/20 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
会计个人实习计划书
2014/08/15 职场文书
论群众路线学习笔记
2014/11/06 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
python数字图像处理:图像的绘制
2022/06/28 Python