2012-05-14 63 views
0

編輯: 我更新最新的代碼後,現在我看到有兩個「字符數」而不是隻顯示一個。 這是否意味着它執行兩次相同的代碼? document.ready和add_endrequest?

$('[id*="txtNewComments"]').charCount({ 
      allowed: 300, 
      warning: 15, 
      counterText: 'Characters left: ' 
     }); 

我使用asp.net頁面的UpdatePanel和一些jQuery的時候,我開始使用的UpdatePanel我的jQuery和javascript函數停止工作,我沒有看到任何行動......之後我搜索,我發現這個:jQuery $(document).ready and UpdatePanels?鏈接,內容非常豐富,但我有一個問題。

下面

是,如果我有一個UpdatePanel中不起作用的代碼...

$(document).ready(function() { 

    $('[id*="txtNewComments"]').charCount({ 
      allowed: 300, 
      warning: 15, 
      counterText: 'Characters left: ' 
     }); 

    .......... 
    .......... 
}); 

//update: 

function UpdateEmployee(....) {} 

所以如果我推薦的方式繼續前進的話,我必須有兩個設定每個腳本一個是內docuement.ready和其他一組腳本是在endRequest有些東西如這下面是更新面板如果我遵循這種模式。

$(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 
}); 

我的問題是:有沒有辦法在的document.ready一組腳本而不是一個,另一個在endrequest ......它的一個痛苦的維持兩個組腳本?

有什麼想法?

與更新面板

<asp:ScriptManager runat="server" /> 
    <asp:UpdatePanel runat="server"> 
     <ContentTemplate> 
      <asp:Repeater runat="server" ID="Repeater1" OnItemCommand="OnItemCommand" OnItemDataBound="OnItemDataBound"> 
       <HeaderTemplate> 
        <table border="0" cellpadding="0" cellspacing="0"> 
         <tr> 
          <th></th> 
          <th>First Name</th> 
          <th>Last Name</th> 
         </tr> 
       </HeaderTemplate> 
       <ItemTemplate> 
        <tr> 
         <td> 
          <asp:ImageButton ID="Edit" ImageUrl="~/Images/EditDocument.png" runat="server" CommandName="edit" /> 
          <asp:ImageButton ID="Delete" ImageUrl="~/Images/Delete_black_32x32.png" runat="server" 
           CommandName="delete" /> 
         </td> 
         <td> 
          <asp:Label runat="server" ID="firstName"><%# Eval("FirstName") %></asp:Label> 
          <asp:PlaceHolder runat="server" ID="firstNameEditPlaceholder" /> 
          <input type="hidden" runat="server" id="firstNameHidden" visible="false" /> 
         </td> 
         <td> 
          <asp:Label runat="server" ID="lastName"><%# Eval("LastName") %></asp:Label> 
          <asp:PlaceHolder runat="server" ID="lastNameEditPlaceholder" /> 
          <input type="hidden" runat="server" id="lastNameHidden" visible="false" /> 
         </td> 
        </tr> 
       </ItemTemplate> 
       <FooterTemplate> 
        <tr> 
         <td> 
          <asp:ImageButton ID="Delete" ImageUrl="~/Images/112_Plus_Blue_32x32_72.png" runat="server" 
           OnClick="OnAddRecord" /> 
         </td> 
         <td><asp:TextBox runat="server" ID="NewFirstName" /></td> 
         <td><asp:TextBox runat="server" ID="NewLastName" /></td> 
        </tr> 
        </table> 
       </FooterTemplate> 
      </asp:Repeater> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
+0

由於您已經在使用jQuery,爲什麼不用'$ .ajax()'調用替換'UpdatePanel'? – jrummell

+0

怎麼樣?你會告訴我代碼嗎? –

+0

如果你包括你如何使用你的'UpdatePanel',我可以指出你正確的方向。 – jrummell

回答

2

更新試試這個:

$(document).ready(function() { 
    bindJqueryFeatures(); 
}); 

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

prm.add_endRequest(function() { 
    bindJqueryFeatures(); 
}); 


function bindJqueryFeatures(){ 
    //bind your jQuery events here initially 
} 

現在,如果要更改或添加一些jQuery的功能,只是在bindJqueryFeatures插入代碼()功能,所以您不需要在兩種方法中公佈您的代碼:$(document).ready() and prm.add_endRequest()

it can be usefull

這就是你需要的嗎?

+0

讓我給它一個鏡頭... –

+0

好吧我有另一個問題觸發,我更新了我的問題 –

相關問題