用Javascript清空(重置)文件类型的INPUT元素的值

之前在StackOverflow回答了这个问题,现在整理到Blog里。

因为安全限制,脚本是不能随意设置其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;
                form.appendChild(f);
                form.reset();
                ref.parentNode.insertBefore(f,ref);
            }
        }
    }

查看demo: http://jsbin.com/muhipoye/1/

用Javascript清空(重置)文件类型的INPUT元素的值,布布扣,bubuko.com

时间: 2024-11-09 16:35:33

用Javascript清空(重置)文件类型的INPUT元素的值的相关文章

JavaScript客户端判断文件类型及大小

<html><head><title>潜水式无堵塞排污泵</title> <meta http-equiv="content-type" content="text/html;charset=gb2312"></head><body>以下是一个客户端控制file上传图片类型和大小的示例(注意:由于是客户端限制,所以用户可以绕过这个限制):<script language=&qu

日期类型的input元素设置默认值为当天

html文件:<input name="" type="date" value="" id="datePicker" class="input">js文件:$(document).ready(function () {document.getElementById('datePicker').valueAsDate = new Date();}

(转)日期类型的input元素设置默认值为当天

原文地址 html5的form元素对日期时间有丰富的支持 <input type="date"> <input type="time"> <input type="datetime"> <input type="month"> <input type="week"> <input type="datetime-local"

javascript:&lt;input&gt; 元素

原文章:https://wangdoc.com/javascript/index.html <input> 元素 <input>元素主要用于表单组件,它继承了 HTMLInputElement 接口. HTMLInputElement 的实例属性 特征属性 name:字符串,表示<input>节点的名称.该属性可读写. type:字符串,表示<input>节点的类型.该属性可读写. disabled:布尔值,表示<input>节点是否禁止使用.一

HTML5-定制input元素

下述内容主要讲述了<HTML5权威指南>第13章关于"定制input元素". input元素可以生成一个供用户输入数据的简单文本框.其缺点在于用户在其中输入什么值都可以,可以配置type类型来获取额外的属性.其中type属性有23个不同的值,而input元素共有30个属性,其中许多属性只能与特定的type属性值搭配使用. 一.用input元素输入文字 type属性设置为text的input元素在浏览器中显示为一个单行文本框. 1. 设定元素大小 maxlength属性设定用

HTML5 改良的 input 元素的种类

在HTML5中,增加与改良的input元素中的type属性,包括url.email.date.time.datetime.datetime-local.month.week.number.range.search.tel.color类型. <!DOCTYPE html> <html> <head lang="en"> <title>增加与改良的input元素中的type属性</title> <meta charset=&

input file类型,文件类型的限制

input type='file'的文件类型限制:"自定义文件" "所有文件" "自定义文件":是来自accept属性的限制 直接限制input type='file'的文件类型限制,通过accept属性进行设定,多个类型用逗号分隔开,因为accept是html5的新特性,所以火狐和IE的支持就显得单薄了, 如: accept可以指定如下信息:   *.3gpp audio/3gpp, video/3gpp 3GPP Audio/Video *.

input:file上传文件类型(记录)

imput 属性有以下几种: 1.type:input类型这就不多说了2.accept:表示可以选择的文件类型,多个类型用英文逗号分开,常用的类型见下表. <input id="file" type="file" accept="image/png,image/gif" name="file" /> 1 3.multiple:是否可以选择多个文件,多个文件时其value值为第一个文件的虚拟路径. <input

&lt;input type=&quot;file&quot; /&gt;浏览时只显示指定文件类型

<input type="file" />浏览时只显示指定文件类型 <input type="file" accept="application/msword" ><br><br>accept属性列表<br> 1.accept="application/msexcel"2.accept="application/msword"3.accept=&q