jquery正确清除input file值的方法

时间:2017-11-17
上传文件时,选择了文件后想清空文件路径,改如何实现呢? 相信很多朋友使用这种jquey方法:$("#file").val(""); 但这种方法并不适合于所有浏览器,部分浏览器不兼容。下面给大家介绍一种兼容所有浏览器的方法。

为什么$("#file").val("")不能清除input file值呢?

.val()设置的是input的value属性,input是HTMLInputElement的实例,value是通过setter方法定义的,当被赋值时,就会把值写到input里面;而改变value属性的方法,实际上操作的是dom的value属性,会触发浏览器的repaint,更新input的值。

正确做法如下(兼容所有浏览器):

        var input = $(this);
        var next = this.nextSibling;
        var parent = input.parent();
        var form = $("<form></form>");
        form.append(input);
        form[0].reset();
        if (next) {
            $(next).before(input);
        } else {
            parent.append(input);
        }