¿Es posible usar bind con un evento del lado del cliente no estándar en Jquery?

Por ejemplo esto AsyncFileUpload, hay un evento "OnClientUploadComplete"

Puedo hacer algo como

$("#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>

preguntado el 31 de julio de 12 a las 11:07

Depende de cómo se genere el evento dentro del código del control. -

@rsplak Lo probé y no funcionó. No estoy seguro si no es posible o lo hice de manera incorrecta. -

Muestra cómo intentaste usar OnClientUploadComplete propiedad -

1 Respuestas

No, no puedes hacer esto.

Los eventos personalizados en el kit de herramientas de control de AJAX se implementan fuera del sistema de eventos del navegador. Ver aquí para más detalles.

Tendrás que usar el add_uploadComplete() método proporcionado por el componente:

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

Dónde yourBehaviorID es la BehaviorID de su extensor (predeterminado en el ClientID del control extendido).

Respondido 31 Jul 12, 11:07

¿Cómo es que .addadd_uploadComplete(), cómo lo encuentras? - Sarawut Positwinyu

@Sarawut, en el código fuente. Todos los componentes de AJAX Control Toolkit exponen eventos personalizados de esa manera, en realidad. - Frederic Hamidi

¿Pasó la identificación de comportamiento correcta? ¿Puede actualizar su pregunta con la parte del marcado de la página donde el AsyncFileUpload extensor está definido, por lo que podemos verificar dos veces? - Frederic Hamidi

@Sarawut, intenta usar $find() y add_uploadComplete() en lugar de $addHandler(). Este último solo se puede usar para registrar eventos DOM "estándar", no eventos personalizados IIRC, y estoy bastante seguro de que su primer argumento debería ser un elemento DOM, no un selector de identificación. - Frederic Hamidi

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.