是否可以在 Jquery 中将绑定与非标准客户端事件一起使用

Is it possible to use bind with non standard client side event in Jquery

提问人:Sarawut Positwinyu 提问时间:7/31/2012 最后编辑:Sarawut Positwinyu 更新时间:8/1/2012 访问量:224

问:

例如,此 AsyncFileUpload,有一个事件“OnClientUploadComplete”

我可以做类似的事情吗

$("#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>
jQuery asp.net 事件 ajaxcontroltoolkit unobtrusive-javascript

评论

0赞 Rory McCrossan 7/31/2012
这取决于如何在控件代码中引发事件。
0赞 Sarawut Positwinyu 7/31/2012
@rsplak我试过了,但没有用。不确定这是否可能,或者我做错了。
0赞 Yuriy Rozhovetskiy 7/31/2012
显示您尝试使用属性的方式OnClientUploadComplete

答:

0赞 Frédéric Hamidi 7/31/2012 #1

不,你不能这样做。

AJAX 控件工具包中的自定义事件是在浏览器的事件系统之外实现的。有关详细信息,请参阅此处

您必须使用组件提供的方法:add_uploadComplete()

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

扩展程序的位置(默认为扩展控件的)。yourBehaviorIDBehaviorIDClientID

评论

0赞 Sarawut Positwinyu 7/31/2012
.addadd_uploadComplete()怎么来,你怎么找到它?
0赞 Frédéric Hamidi 7/31/2012
@Sarawut,在源代码中。实际上,所有 AJAX 控件工具包的组件都以这种方式公开自定义事件。
0赞 Frédéric Hamidi 8/1/2012
您是否传递了正确的行为 ID?您能否使用定义扩展器的页面标记部分来更新您的问题,以便我们仔细检查?AsyncFileUpload
0赞 Frédéric Hamidi 8/1/2012
@Sarawut,请尝试使用 and 而不是 .后者只能用于注册“标准”DOM 事件,而不是自定义事件 IIRC,我很确定它的第一个参数应该是一个 DOM 元素,而不是一个 id 选择器。$find()add_uploadComplete()$addHandler()