it-swarm.com.ru

После обратной передачи моя функция JavaScript не работает в ASP.NET

У меня есть общие функции, и я свернуть его на CommonFunctions.js в папке сценариев.

Я включаю его на своей главной странице и использую на своих страницах. Когда я делаю какие-либо сообщения обратно на страницу, моя функция не работает.

Мой 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 () {

        });

    });
  }
});
11
Mennan

Поскольку вы используете UpdatePanel, часть DOM, к которой вы прикрепили свой обработчик событий, отбрасывается и воссоздается после обратной передачи. Это приводит к удалению любых обработчиков событий, которые были присоединены jQuery при первой загрузке страницы.

Когда вы отправляете только часть страницы назад, функция jQuery $(function() {}); больше не запускается, поэтому ваши обработчики никогда не будут повторно подключены.

Вот связанный вопрос , который показывает, как повторно подписаться на ваши события при обновлении UpdatePanel.

13
Josh Earl

Это из-за частичной обратной передачи updatepanel. вот что вам нужно сделать.

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

   // put all your javascript functions here 

  });
}

У меня была такая же проблема, и она работала для меня. Я надеюсь, что это поможет вам тоже.

20
PraveenLearnsEveryday

Это из-за updatepannel используется. Следующий код работает нормально. Просто поместите свой код jquery в событие pageLoad, как показано ниже

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

у меня та же проблема, я решил с этим кодом:

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

Предполагая, что вы используете UpdatePanel для выполнения обратной передачи, и JS-код привязан к HTML-элементам на панели обновлений, вам необходимо прикрепить их снова при загрузке панели обновления. Вы можете подключить свой код к событию endRequest:

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

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

Помните, что если вы используете более одной панели обновлений, вы должны проверить, какая панель обновлений обновлена, и прикрепить только те события, которые необходимы, в противном случае вы рискуете запускать события более одного раза.

1
Stilgar

Столкнулся с такой же проблемой. + Изменить 

$(document).ready(function() {

в

Sys.Application.add_load(function() {

это заставит его работать даже на частичном постбаке

0
Singh T