2010-05-27 11 views
5

Estoy usando Javascript para crear un elemento DIV y abrir una nueva página usando onclientclick. Esto funciona genial Ahora, tengo que escribir desde el lado del servidor y este elemento debe crearse antes de que se publique.¿Cómo ejecutar una función de javascript antes de la devolución de datos del botón asp.net?

¿Cómo obtengo el javascript para ejecutar antes de la devolución?

Actualmente, tengo que presionar el botón dos veces porque el elemento no existe para escribir también en el primer clic.

Para ser claros, necesito que esto se ejecute antes del "OnClick" del botón.

Actualización: Parece que se llama a la función Javascript antes de la devolución pero el elemento no se actualiza hasta que ejecuto la segunda devolución. Hmm

Actualización: Desafortunadamente, es un poco más complicado que esto.

Estoy creando una etiqueta div en javascript para abrir una nueva ventana. Dentro de la etiqueta div, estoy usando una sintaxis de enlace de datos <% = Vista previa%> para poder acceder a este elemento en el lado del servidor. Desde el lado del servidor, estoy inyectando el código.

Estoy pensando que esto puede ser un problema de huevo de gallina pero no estoy seguro.

¡ACTUALIZACIÓN!

No es el Javascript el que no se ejecuta primero. Es el mecanismo de enlace de datos que está leyendo la variable en blanco antes de que pueda configurarlo.

Hmm

+0

¿Está creando dinámicamente un elemento en una página para enviar, y luego necesita leer los datos que ha enviado al lado del servidor? – R0MANARMY

+0

Podría ser útil si publica un ejemplo realmente simple de lo que está tratando de hacer. Al leer su pregunta, me parece que podría usar un panel de actualización para generar el contenido dinámico de su div. –

Respuesta

0

ingresa el código aquí ¿Esto funciona para ti?

Javascript

function stuffYouWantToDo(){ 
    //do your stuff 
    //then submit the .NET form 
    document.forms[0].submit(); 
} 

código .NET

<asp:button ID="Button1" onClientClick="return false;stuffYouWantToDo();"/> 

Esto debería garantizar que las cosas que quiere hacer se hace, a continuación, se envía el formulario. La devolución falsa impide que se envíe el formulario cuando primero hace clic en el botón y se basa en la llamada en la función stuffYouWantToDo para enviar el formulario.

+0

¿El retorno falso realmente funciona así? Creo que nada se ejecutará después de la devolución falsa. Creo que event.stopPropagation() sería un mejor enfoque. –

+0

err, podría tener esos al revés. stuffYouWantToDo(); falso retorno; – Tommy

1

no tiene que depender de los controles del servidor para realizar devoluciones en asp.net. puede obtener un control más preciso de su aplicación publicando desde javascript siempre que esté listo ...

el framework auto genera una función llamada __doPostback (.....) y finalmente la llama cada vez que necesita hacer una devolución de datos.

tan. en lugar de usar el botón de control del servidor, puede tener un <button onclick="foo()" /> normal que una vez que haya terminado de realizar todo lo que necesita, simplemente llame a la función __doPostback.

asp.net le ofrece una forma ingeniosa de acceder a esa función con Página.GetPostbackClientEvent (creo, pero hay métodos par que apoyan esta metodología) http://msdn.microsoft.com/en-us/library/system.web.ui.page.getpostbackclientevent.aspx

0

Si desea utilizar jQuery que podría hacer lo siguiente:

$(document).ready(function() { 

    var execScript = $(".myButton").attr("href").replace("javascript:", ""); 

    $(".myButton").attr("href", "#").click(function() { 
     // Add before click logic here 

     eval(execScript); 
    }); 
}); 
-1

Podría no sólo tiene que añadir un validador personalizado alguna parte en tu forma?

+0

esto no es para un validador. Intento crear una página de vista previa en una nueva ventana. –

Cuestiones relacionadas