2012-03-15 19 views
11

私は共通の機能を持っており、ScriptsフォルダのCommonFunctions.jsで折りたたんでいます。ポストバック後、私のJavaScript関数はASP.NETで動作しません

私はそれを私のマスターページに入れて、私のページに使っています。私がページ上に何かポストバックをすると、私の機能は動作しません。

マイCommonFunctions.js:あなたはUpdatePanelを使用しているので

$(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

部分postbacck上でも実行するように強制します

Sys.Application.add_load(function() { 

$(document).ready(function() { 

を変更して、あなたは、部分的なポストバックをやっていますか?条件付きポストバックを使用してパネルを更新することを意味しますか? – PraveenVenu

+2

ちょうど確認する:これはあなたが使用しているコードですか?私は "gf"関数への呼び出しを見ますが、 "gF"関数が宣言されています。 JSは大文字と小文字を区別することを忘れないでください –

+0

はい私は、このjavascriptコードを使用しているときに、ポストバックで更新パネルを使用します。

19

これは、更新パネルの部分的なポストバックによるものです。ここであなたがする必要があるものです。

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

    // put all your javascript functions here 

    }); 
} 

私は同じ問題があり、それは私のために働いた。それがあなたにも役立つことを願っています。

+1

このコードは同じページで動作しますが、masterpage.iで呼びますが、試してみてください。 – Mennan

+0

マスターページにscriptmanagerタグがありますか?もしそこに置いて、もう一度やり直してください。 – PraveenLearnsEveryday

+0

私はこの問題を解決しました[戻る](http://stackoverflow.com/questions/256195/jquery-document-ready-and-updatepanels) – Mennan

1

UpdatePanelを使用してポストバックを行い、更新パネル内のHTML要素にJSコードがアタッチされていると仮定すると、更新パネルがロードされたときにそれらを再度添付する必要があります。複数の更新パネルを使用している場合は、パネルが更新され、更新をチェックし、そのイベントのみを添付しなければならないことを覚えておいてください

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

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

:あなたはEndRequestのイベントにコードをフックすることができますそれ以外の場合は、イベントが2回以上発生する危険があります。

7

updatepannelが使用されているためです。次のコードは正常に動作しています。私は同じ問題を抱えている

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

必要だった1つの機能。ありがとう! +1 – Si8

2

以下のようにするだけpageLoadイベント内でごjqueryコードを入れて、私はこのコードで解決してきた:

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

は同じ問題に直面しました。これは