web-dev-qa-db-ja.com

ポストバック後、JavaScript関数がASP.NETで機能しません

私には共通の機能があり、CommonFunctions.jsはScriptsフォルダにあります。

私はそれを自分のマスターページに含め、自分のページで使用します。ページにポストバックを実行すると、機能が動作しません。

ぼくの 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 () {

        });

    });
  }
});
14
Mennan

UpdatePanelを使用しているため、イベントハンドラーをアタッチしたDOMの一部が削除され、ポストバック後に再作成されます。これにより、ページが最初に読み込まれたときにjQueryによって添付されたイベントハンドラーが削除されます。

ページの一部のみをポストバックすると、jQuery $(function() {});が再度起動されないため、ハンドラーが再接続されることはありません。

これが 関連する質問 で、UpdatePanelが更新されたときにイベントを再サブスクライブする方法を示しています。

13
Josh Earl

これは、updatepanelの部分的なポストバックが原因です。ここにあなたがする必要があるものがあります。

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

   // put all your javascript functions here 

  });
}

私は同じ問題を抱えていて、それは私のために働いた。参考になれば幸いです。

22

updatepannelが使用されているためです。次のコードは正常に動作しています。以下のようにjqueryコードをpageLoadイベント内に配置するだけです

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

同じ問題に直面した。変化する

$(document).ready(function() {

Sys.Application.add_load(function() {

これは部分的なpostbacckでも実行することを強制します

2
Singh T

私は同じ問題を抱えています、私はこのコードで解決しました:

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

UpdatePanelを使用してポストバックを実行していて、JSコードが更新パネル内のHTML要素に接続されているとすると、更新パネルがロードされたときにそれらを再度アタッチする必要があります。 endRequestイベントでコードをフックできます。

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

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

複数の更新パネルを使用している場合は、どの更新パネルが更新されるかを確認し、必要なイベントのみを添付する必要があることに注意してください。そうしないと、イベントが複数回発生するリスクがあります。

1
Stilgar