1

例如,这AsyncFileUpload使用绑定与非标准的客户端事件,有一个事件“OnClientUploadComplete”是否有可能在jQuery中

我可以做这样的事情

$("#ctl00_MainContent_AsyncFileUpload1_ctl02") 
.bind("OnClientUploadComplete", function() { alert("test"); 
}) 
<ajaxToolkit:AsyncFileUpload OnClientUploadComplete="uploadComplete" 
    runat="server" ID="upload" 
Width="400px" UploaderStyle="Modern" CompleteBackColor="White" UploadingBackColor="#CCFFFF" 
ThrobberID="imgLoader" OnUploadedComplete="AsyncFileUpload1_UploadedComplete" 
    OnClientUploadStarted = "uploadStarted" /> 
<asp:Image ID="imgLoader" runat="server" ImageUrl="~/images/loader.gif" /><br /><br /> 
<img id = "imgDisplay" alt="" src="" style = "display:none"/> 

$addHandler($("#<%=upload.ClientID %>"), 'uploadComplete', (function() { alert("test"); })); 


function uploadStarted() { 
    $get("imgDisplay").style.display = "none"; 
} 
function uploadComplete(sender, args) { 
    var imgDisplay = $get("imgDisplay"); 
    imgDisplay.src = "images/loader.gif"; 
    imgDisplay.style.cssText = ""; 
    var img = new Image(); 
    img.onload = function() { 
     imgDisplay.style.cssText = "height:100px;width:100px"; 
     imgDisplay.src = img.src; 
    }; 
    img.src = "<%=ResolveUrl(UploadFolderPath) %>" + args.get_fileName(); 
} </script> 
+2

你为什么不试试呢? – rsplak 2012-07-31 10:08:12

+0

这取决于如何在控件的代码中引发事件。 – 2012-07-31 10:12:06

+0

@rsplak我试过了,它没有工作。不知道这是不可能的,或者我做错了。 – 2012-07-31 10:56:13

回答

0

不,你不能这样做。

AJAX Control Toolkit中的自定义事件在浏览器事件系统之外实现。详情请参阅here

你将不得不使用由组件提供的add_uploadComplete()方法:

$find("yourBehaviorID").add_uploadComplete(function() { 
    alert("test"). 
}); 

哪里yourBehaviorID是您扩展的BehaviorID(默认为扩展控制的ClientID)。

+0

怎么是.addadd_uploadComplete(),你怎么找到它? – 2012-07-31 10:58:04

+0

@Sarawut,在[源代码](http://ajaxcontroltoolkit.codeplex.com/SourceControl/changeset/view/1014bf767f65#Server%2fAjaxControlToolkit%2fAsyncFileUpload%2fAsyncFileUpload.pre.js)。实际上,所有AJAX Control Toolkit的组件都以这种方式公开自定义事件。 – 2012-07-31 11:02:15

+0

我已经尝试了代码,但它没有工作 – 2012-08-01 03:20:44