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 相关文章推荐
js setattribute批量设置css样式
Nov 26 Javascript
JQuery中DOM加载与事件执行实例分析
Jun 13 Javascript
基于jquery实现复选框全选,反选,全不选等功能
Oct 16 Javascript
JavaScript数组复制详解
Feb 02 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
Mar 15 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
Jun 14 Javascript
理解javascript async的用法
Aug 22 Javascript
Angular CLI 安装和使用教程
Sep 13 Javascript
浅谈angularJS2中的界面跳转方法
Aug 31 Javascript
详解Vue.js v-for不支持IE9的解决方法
Dec 29 Javascript
js实现简单贪吃蛇游戏
May 15 Javascript
element-ui 弹窗组件封装的步骤
Jan 22 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 array_slice函数的使用以及参数详解
2008/08/30 PHP
php 生成饼图 三维饼图
2009/09/28 PHP
yii2分页之实现跳转到具体某页的实例代码
2016/06/02 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
json的前台操作和后台操作实现代码
2012/01/20 Javascript
js判断url是否有效的两种方法
2014/03/04 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
jQuery中on()方法用法实例详解
2015/02/06 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
JavaScript绑定事件监听函数的通用方法
2016/05/14 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
php结合js实现多条件组合查询
2019/05/28 Javascript
微信小程序简单的canvas裁剪图片功能详解
2019/07/12 Javascript
python中定义结构体的方法
2013/03/04 Python
Python中的异常处理学习笔记
2015/01/28 Python
Python实现从订阅源下载图片的方法
2015/03/11 Python
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
详解Django 时间与时区设置问题
2019/07/23 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
Nike香港官网:Nike HK
2019/03/23 全球购物
UNIX特点都有哪些
2016/04/05 面试题
2014年迎新年活动方案
2014/02/19 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
交通事故协议书范本
2016/03/19 职场文书
这样写python注释让代码更加的优雅
2021/06/02 Python
CPU不支持Windows11系统怎么办
2021/11/21 数码科技
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL