File Input的重置

在日常使用file input时,都会涉及到文件按钮的重置。

重置一个文件域有三种方式

  1. 将文件域的value设置为空。

    此种方式实现简单,但是只兼容ie11以上或是现代浏览器。在兼容低版本的项目中不适用。

  2. 克隆或是创建新的file input 元素进行替换

    此种方式具有很强的兼容性,但是控件将丢失原有的事件监听器,所以并不适用。

  3. 调用表单控件的reset方法进行重置

    此种方式兼容性好,但是如果重置页面内表单会涉及到重置表内其他控件的问题。这时候可能需要我们创建新的表单将文件域放入后reset,之后再放回原处。示例代码如下

    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);  
            }  
        }  
    } 
    

值得一提的是,如果使用Jquery,表单默认是没有reset方法的。

但是可以通过如下方式间接调用DOM对象的reset方法

$('#formId')[0].reset()

注:此种方式不能重置隐藏域,需要单独处理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,668评论 0 17
  • 本人做php的,最近发现JS真的是博大精深啊,比PHP难.在HTML中,表单是由form元素来表示的,但是在jav...
    linfree阅读 2,250评论 3 17
  • Bootstrap是什么? 一套易用、优雅、灵活、可扩展的前端工具集--BootStrap。GitHub上介绍 的...
    凛0_0阅读 10,965评论 3 184
  • 表单基础知识 在HTML中,表单是由 元素来表示的,而在JS中,表单对应的则是HTMLFormElement类型。...
    oWSQo阅读 922评论 0 1
  • 一.什么是< form>表单 格式: 作用:form表单一般用来收集用户的信息,并把信息传送到后台。 注意点:1....
    饥人谷_刘冲阅读 2,791评论 0 1