【问题标题】:Clearing File Upload清除文件上传
【发布时间】:2014-06-04 07:58:52
【问题描述】:

我有 jQuery 函数来验证上传文件的文件扩展名。如果文件不属于所需的文件扩展名,则会显示一条验证消息,我将通过 jQuery 清除 File Upload 的值

$('#ctl00_ContentPlaceHolder1_FileUpload').val("")

它在现代浏览器中运行良好,但在 IE 8 中却不行。我也尝试过

document.getElementById('ctl00_ContentPlaceHolder1_FileUpload').value = ''

但也不工作。我的完整代码是

if ($.inArray(ext, ['gif', 'png', 'jpg', 'jpeg', 'bmp']) == -1) {
    alert('Image must be .jpg/.jpeg/.gif/.bmp/.png only.');
    $('#ctl00_ContentPlaceHolder1_FileUpload').val("");
    document.getElementById('ctl00_ContentPlaceHolder1_FileUpload').value = '';
    $("#ctl00_ContentPlaceHolder1_FileUpload").focus();
}

【问题讨论】:

    标签: c# jquery internet-explorer


    【解决方案1】:

    IE 有一些 security restriction(read-only) 超过 <input type="file">

    因此,解决方法是 clone() 并替换当前的 <input>

    if(navigator.userAgent.toUpperCase().indexOf('MSIE') >= 0){
        $("input[type='file']").replaceWith($("input[type='file']").clone(true));
    } else {
        $("input[type='file']").val('');
    }
    

    此外,如果$('#form')[0].reset(); 是表单中的唯一字段,它也可以是一个选项。

    【讨论】:

    • 当我尝试实现上述代码时,我得到 "'$.browser.msie' is null or not an object" 错误
    • 您使用的 jquery 版本是什么? $.browser.msie 现已弃用。
    • 感谢 @shaunakde .browser 调用已在 jquery 1.9 中删除,因此我在页面中的此链接上引用了 jquery-migrate-1.2.1.js
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 2018-01-16
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    相关资源
    最近更新 更多