Documento.Ready () no funciona después de PostBack


Tengo una página que contiene un control de usuario dentro de un panel de actualización. $(document).ready(function() ) { se llama y ejecuta el código correctamente cuando la página se carga por primera vez, pero si el usuario hace clic en un botón (dentro del control del usuario), el document.ready() no se llama (document.load, onload también no funciona)

He investigado esto en la red y he encontrado problemas similares, pero nada que pueda explicar por qué esto no está funcionando. ¿Qué otras causas puede haber para que document.ready no funcione?

Author: Xyan Ewing, 2012-03-06

8 answers

Esto será un problema con postback parcial. El DOM no se vuelve a cargar y, por lo tanto, la función document ready no se volverá a pulsar. Necesitas asignar un manejador de postback parcial en JavaScript de esta manera...

function doSomething() {
   //whatever you want to do on partial postback
}

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(doSomething);

La llamada anterior a add_endRequest debe colocarse en el JavaScript que se ejecuta cuando la página se carga por primera vez.

 42
Author: El Ronnoco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-25 18:50:20

En lugar de $(document).ready puedes usar function pageLoad(){}.

Es llamado automáticamente por el ScriptManager en una página, incluso en un postback.

 24
Author: tedski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-06 15:45:52

Me he encontrado con esto hace un tiempo, como dijo El Ronnoco, tiene que ir con el DOM no ser recargado. Sin embargo, simplemente puede cambiar $(document).ready(function() { a

Sys.Application.add_load(function() {

Esto obligará a que se ejecute en cada postback.

También puedes usar la función pageLoad (), pero solo puedes tener una función pageLoad, mientras que con Sys.Aplicación.add_load, puede agregar tantos manejadores como desee.

 15
Author: pharophy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-11 00:49:02

La mejor manera es

<asp:UpdatePanel...
<ContentTemplate
     <script type="text/javascript">
                    Sys.Application.add_load(LoadScript);
     </script>
 you hemla code gose here 
</ContentTemplate>
    </asp:UpdatePanel>

Función Javascript

<script type="text/javascript">

        function LoadScript() {
            $(document).ready(function() {

                   //you code gose here 
                                    });
         }
</script>

O

Está bajo UpdatePanel de lo que necesita para registrar el script de cliente de nuevo utilizando

ScriptManager.RegisterClientScript

O

$(document).ready(function() {
    // bind your jQuery events here initially
});

var prm = Sys.WebForms.PageRequestManager.getInstance();

prm.add_endRequest(function() {
    // re-bind your jQuery events here
    loadscript();

});


$(document).ready(loadscript);

function loadscript()
{
  //yourcode 
}
 9
Author: Pranay Rana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-06 15:54:16

Este es un ejemplo que funcionó para mí en el pasado:

<script>
function MyFunction(){ 
    $("#id").text("TESTING");
}
//Calling MyFunction when document is ready (Page loaded first time)
$(document).ready(MyFunction); 

//Calling MyFunction when the page is doing postback (asp.net)
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(MyFunction);
</script>
 3
Author: Ernest,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-06 21:23:44

Este código a continuación funciona bien para resolver este problema. Como se indica en el enlace publicado antes ( http://encosia.com/document-ready-and-pageload-are-not-the-same / ), cuando usted tiene un asp.NET con UpdatePanels usarás la función pageLoad (). Cuando solo tienes una página y en cada postback se recargará completamente, el document (documento).ready() es la opción correcta.

Ejemplo usando pageLoad:

    function pageLoad() {

        $(".alteraSoVirgula").keyup(function () {
            code here
        })
    }
 1
Author: Reginardo Tribuzi Lula Júnior,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-30 23:28:43

También me enfrentaba al mismo problema, pero encontré el jQuery document(documento).ready event handler funciona cuando se carga la página, pero después ASP.Net AJAX UpdatePanel Partial PostBack no se llama. así que usa Sys.Aplicación.add_load (function () {}); en lugar de document (document).¿Listos?. Esto funciona perfectamente para mí:)

<script>
Sys.Application.add_load(function() { //Your code }); </script>

 0
Author: romi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-07 06:07:08

La mayoría de las veces, esto sucede debido al Updatepanle. Simplemente coloque disparadores postback en el botón y resolverá esto.

 -2
Author: Kasun Koswattha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-09 11:05:19