2012-03-15 51 views
11

Tengo funciones comunes y la colapso en CommonFunctions.js en la carpeta Scripts.Después de la devolución de datos, mi función JavaScript no funciona en ASP.NET

Lo incluyo en mi página maestra y la uso en mis páginas. Cuando hago una publicación en una página, mi función no funciona.

Mi CommonFunctions.js:

$(function() { 

    gf(); 

    if (Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) { 

     gf(); 
    } 


function gf(){ 

    $('.AddNewGeneralPanel').click(function() { 

     if ($(this).find('.AddNewGeneralPanelStyle').text() == "") { 
      $(this).find('.AddNewGeneralPanelStyle').text("( Gizle )"); 
      lastOpenId = $(this).attr("kodid"); 
     } 
     else 
      $(this).find('.AddNewGeneralPanelStyle').text(""); 

     $(this).next('.AddNewGeneralAccordionDiv').slideToggle('slow', function() { 

     }); 

    }); 
    } 
}); 
+1

Qué haces devolución parcial? Me refiero al panel de actualización con devolución de datos condicional? – PraveenVenu

+2

Solo para confirmar: ¿es EXACTAMENTE el código que estás usando? Veo una llamada a una función "gf" pero se declara una función "gF". No olvide JS distingue entre mayúsculas y minúsculas –

+0

sí, uso panel de actualización. Funciona bien con postback cuando uso este código de JavaScript usando

19

Es a causa de las devoluciones de datos parciales de updatepanel. Aquí está lo que tú necesitas hacer.

function pageLoad(sender, args) 
{ 
    $(document).ready(function(){ 

    // put all your javascript functions here 

    }); 
} 

Tuve el mismo problema y funcionó para mí. Espero que te ayude a ti también.

+1

Este código funciona en la misma página, pero lo llamé en la página maestra. Lo intento pero no funciona para mí – Mennan

+0

¿Tiene la etiqueta scriptmanager en la página maestra? si no, póngalo allí y vuelva a intentarlo. – PraveenLearnsEveryday

+0

He resuelto este problema thx [postback] (http://stackoverflow.com/questions/256195/jquery-document-ready-and-updatepanels) – Mennan

1

Suponiendo que está utilizando un UpdatePanel para hacer la devolución de datos y el código JS está unido a elementos HTML dentro del panel de actualización, debe volver a adjuntarlos cuando se cargue el panel de actualización. Puede conectar su código en el evento endRequest:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler) 

http://msdn.microsoft.com/en-us/library/bb383810.aspx

Tenga en cuenta que si está utilizando más de un panel de actualización se debe comprobar la cual panel de actualización se actualiza y adjuntar únicamente los eventos son necesarios, de lo contrario te arriesgas a que los eventos se disparen más de una vez.

7

Es por updatepannel utilizado. El siguiente código está funcionando bien. Sólo hay que poner el código dentro del evento jquerypageLoad, como a continuación

function pageLoad(sender, args) { 
    $(document).ready(function() {....} 
} 
+0

La única función que se necesitaba. ¡Gracias! +1 – Si8

2

tengo el mismo problema, he resuelto con este código:

<script type="text/javascript"> 
    function pageLoad() 
    { 
     $('#datetimepicker2').datetimepicker();   
    } 
</script> 
0

Ante mismo problema. Cambiar

$(document).ready(function() { 

a

Sys.Application.add_load(function() { 

esto obligará a que se ejecute incluso en postbacck parcial

Cuestiones relacionadas