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 12 Javascript
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
Jan 13 Javascript
Google (Local) Search API的简单使用介绍
Nov 28 Javascript
js快速排序的实现代码
Dec 08 Javascript
判断客户浏览器是否支持cookie的示例代码
Dec 23 Javascript
js键盘事件的keyCode
Jul 29 Javascript
jQuery遍历json的方法分析
Apr 16 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
Jun 08 Javascript
详解vue.js 开发环境搭建最简单攻略
Jun 12 Javascript
layer.open的自适应及居中及子页面标题的修改方法
Sep 05 Javascript
详解Java中String JSONObject JSONArray List转换
Nov 13 Javascript
如何在vue中使用kindeditor富文本编辑器
Dec 19 Vue.js
用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 遍历文件实现代码
2011/05/04 PHP
php中用socket模拟http中post或者get提交数据的示例代码
2013/08/08 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
php版微信返回用户text输入的方法
2016/11/14 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
详解关于php的xdebug配置(编辑器vscode)
2019/01/29 PHP
jquery实现加载进度条提示效果
2015/11/23 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
JavaScript制作简单的框选图表
2017/05/15 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
2017/07/18 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
微信小程序中target和currentTarget的区别小结
2020/11/06 Javascript
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
python去掉空白行的多种实现代码
2018/03/19 Python
python实现合并两个排序的链表
2019/03/03 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
浅析Python requests 模块
2020/10/09 Python
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
TCP/IP中的TCP和IP分别承担什么责任
2012/04/21 面试题
高中家长寄语
2014/04/02 职场文书
新书发布会策划方案
2014/06/09 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
先进事迹材料范文
2014/12/29 职场文书
golang 生成对应的数据表struct定义操作
2021/04/28 Golang
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL