【问题标题】:Is it possible to use bind with non standard client side event in Jquery是否可以在 Jquery 中使用绑定非标准客户端事件
【发布时间】:2012-07-29 01:52:45
【问题描述】:

比如这个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>

【问题讨论】:

  • 这取决于在控件代码中如何引发事件。
  • @rsplak 我试过了,但没有用。不确定这是不可能的还是我做错了。
  • 显示您如何尝试使用OnClientUploadComplete 属性

标签: jquery asp.net events ajaxcontroltoolkit unobtrusive-javascript


【解决方案1】:

不,你不能这样做。

AJAX 控件工具包中的自定义事件是在浏览器的事件系统之外实现的。详情请见here

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

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

其中yourBehaviorID 是扩展器的BehaviorID(默认为扩展控件的ClientID)。

【讨论】:

  • .addadd_uploadComplete()是怎么来的,怎么找到的?
  • @Sarawut,在source code。实际上,所有 AJAX 控件工具包的组件都以这种方式公开自定义事件。
  • 你传递了正确的行为ID吗?您能否使用定义了 AsyncFileUpload 扩展器的页面标记部分更新您的问题,以便我们仔细检查?
  • @Sarawut,尝试使用$find()add_uploadComplete() 而不是$addHandler()。后者只能用于注册“标准”DOM 事件,而不是自定义事件 IIRC,我很确定它的第一个参数应该是 DOM 元素,而不是 id 选择器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 2010-12-22
  • 1970-01-01
  • 2012-11-08
  • 2021-08-02
  • 1970-01-01
相关资源
最近更新 更多