jQuery FileUpload多次注册

时间:2016-09-19 14:55:56

标签: jquery file upload blueimp

我正在一个非常古老的VB.NET ASP.NET网站上工作,尝试连接拖放上传以及"浏览"功能。如果您只是转到页面并上传,一切正常。但是,如果您在页面上的UpdatePanel中执行任何活动,则功能会中断。所以,我在我的Page_Load中添加了这个:

 ' register the script that wires up the upload region
        Dim cstext1 As String = "setupFileUpload();"
        ScriptManager.RegisterStartupScript(upfiles, upfiles.GetType(), "UploadFileSetup", cstext1, True)

这样可行,但问题是如果你运行多个操作,fileupload似乎会继续注册它的行为。那么如果我上传一个文件,它会多次出现(例如 - 5个文件上传发生在后台。

我的javascript看起来像这样。有关如何检查处理程序是否已注册的任何建议?

片段:

function setupFileUpload() {
        if ($('#fileupload').fileupload) return;

        $('#fileupload').fileupload({
            dataType: 'json',
            url: '<%= ResolveUrl("AjaxFileUpload.ashx") %>',
            add: function (e, data) {
                $('#<%= lblErrorFileType.ClientID %>').css('display', 'none');
                var valid = true;
                var re = /^.+\.((txt)|(jpeg)|(jpg)|(png)|(gif)|(pdf)|(doc)|(docx)|(xls)|(xlsx))$/i;
                $.each(data.files, function (index, file) {
                    if (!re.test(file.name)) {
                        $('#<%= lblErrorFileType.ClientID %>').css('display', '');
                        valid = false;
                    }
                });

                if (valid)...

1 个答案:

答案 0 :(得分:0)

所以在尝试了几件事之后,我将这个调用添加到了Sys.WebForms.PageRequestManager,这似乎比在代码隐藏中传递函数名更好。

$(document).ready(function () {
            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(setupFileUpload);
            $('#<%= lblErrorFileType.ClientID %>').css('display', 'none');
            setupFileUpload();
        });