2012-01-25 10 views
1

この質問をするにはが本当にと思っていますが、ここには行きます。私は特定のチェックボックスやその他の条件が満たされているかどうかによって、Ajaxでページにテキストボックスを読み込むかもしれないasp.netページを持っています。私はまた、これらのボックスが特定の条件では隠される必要があります。ドキュメント内のjqueryをロードしている間に、テキストボックスがページ上にあるユースケースでは、準備ができています。テキストボックスに特定のユーザーアクションがロードされている他のユースケースでは、ドキュメント準備のコードは効果がありません。私はドキュメントの準備を一括して終わらせ、テキストボックスがロードされた後に呼び出すことができる "setup"という独自の関数に配置しました。誰かが私のJqueryを吸うことを減らすことができますか?

ここに問題があります:これらのテキストボックスが読み込まれた後にページ呼び出しを設定する方法を理解できません。 .ajaxComplete()を使用することはできません。おそらくasp.netがjqueryを使用してこれらのボックスをロードしていないためです。また、適切なタイミングでセットアップを呼び出す方法はありません。私が考え得る唯一のことは、マウスオーバーでページ呼び出しをセットアップすることでした。

これは不必要に貪欲で、率直に言って本当に悪いコードです。それらのボックスがロードされた後、一度「セットアップ」と呼ぶ簡単な方法はありますか?

 jQuery(document).ready(function() { 
     setup("ready"); 

     }); 

     function setup(action) 
     { 
     if(action=="ready" || $("#<%=CurrentInventoryMode.ClientID %> option:selected").val()==1) 
     { 
     if(!$('#<%=AllowSub.ClientID %>').is(':checked')) 
     { 
      $('#<%=InStockUnits.ClientID %>').hide(); 
      $('#<%=LowStockUnits.ClientID %>').hide(); 
      $('#SellAsSpan').hide(); 
      $('#<%=SellAsUnit.ClientID %>').hide(); 
     } 
     if($("#<%=SellAsUnit.ClientID %> option:selected").val()==4) 
     { 
      removeWeight(); 
     }else{ 
      removeMeasure(); 
     } 
     } 
     } 

     $('body').mouseover(function() 
     { 
     //there has GOT to be a better way.... 
     setup(); 
     }); 

編集:ここでは は、AJAX呼び出しを行うコードの一部です。そのAjaxの更新パネル

<ajax:UpdatePanel ID="InventoryAjax" runat="server" UpdateMode="conditional"> 
      <ContentTemplate> 
       <asp:DropDownList ID="CurrentInventoryMode" runat="server" AutoPostBack="true" OnSelectedIndexChanged="CurrentInventoryMode_SelectedIndexChanged" onclick="setup();"> 
        <asp:ListItem Value="0" Text="Disabled"/> 
        <asp:ListItem Value="1" Text="Track Product"/> 
        <asp:ListItem Value="2" Text="Track Variants"/> 
       </asp:DropDownList> 

私はonclickの中にセットアップを入れてみましたが、それは価値のないのは、その種:(ので、箱・ロードの前に発射する。

+0

あなたがコールバックとして関数を呼び出すことはできませんあなたのアヤックスが完了すると –

+0

は<%='文字列の外にあるべき – gdoron

+0

@SergioTapiaそれは私がやりたいことです。唯一のWA y私はそれを行う方法を知っています.ajaxCompleteであり、それは動作していません。 – CountMurphy

答えて

1

UpdatePanelsは。だから、新しいHTML更新されたHTMLを置き換えますリバウンドをする必要がありますここであなたが軌道に乗るためのjavascriptのブロックです。?。 `

function pageLoaded(sender, args) { 
     // There are two arrays (created and updated). Treat them separately if if makes sense 
     var updatePanels = args.get_panelsUpdated().concat(args.get_panelsCreated()); 
     for (var i = 0; i < updatePanels.length; i++) { 
      if (updatePanels[i].id == "<%= UpdatePanel1.ClientID %>"){ 
       // code to bind contents of UpdatePanel1 
      } 
     } 
    } 
    $(document).ready(function() { 
     // Handle updatepanel updates 
     Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(pageLoaded); 
    }); 
+0

コードを//バインドするコードに警告を入れますが、htmlが更新パネルから更新されても解雇されることはありません – CountMurphy

+0

投稿したコードを読んだ後、それを理解してください!本当にありがとう! – CountMurphy

関連する問題