2012-08-01 171 views
1

我有一個包含可編輯字段和幾個必填字段的頁面。問題是,無論何時點擊一個按鈕來激活可修改的字段以進行更改,或者應用/取消這些更改時,它都會導致我的Javascript再次觸發,從而在我的必填字段中附加另一個「必填字段」指示符。我希望指標只能附加在第一個負載上,而不會受到界面上單擊按鈕的影響。我怎樣才能做到這一點?我相信我只需要我的Javascript「if」語句的正確條件,但不知道可能是什麼。我研究過它並幹了。在UpdatePanel中多次觸發pageLoad事件

這是我的標記。您可以放心地忽略整個UpdatePanel地區。你需要知道的唯一事情是,它內部的按鈕導致Javascript再次運行,每次點擊。

謝謝! ;)

<asp:Content runat="server" ContentPlaceHolderID="HeadContent"> 
    <script type="text/javascript"> 
     function contentPageLoad() { 
      // Add "Required Field" Indicators 
      if (/*NEED CONDITION*/) { 
       $("h4.required").append(" <span class=\"r\">*</span>"); 
      } 
     } 
    </script> 
</asp:Content> 
<asp:Content runat="server" ContentPlaceHolderID="MainContent"> 
    <!-- This is an updatable textfield. --> 
    <!-- PROBLEM!: LinkButtons here cause the double firing of the javascript above. --> 
    <!-- Remember that "ChildrenAsTriggers" defaults to True for UpdatePanel. --> 
    <asp:UpdatePanel ID="RequestorNameUpdatePanel" runat="server"> 
    <ContentTemplate> 
    <asp:MultiView ID="RequestorName_mv" runat="server" ActiveViewIndex="0"> 
     <asp:View ID="RequestorNameNormalView" runat="server"> 
      <div class="rightCol"> 
       <asp:LinkButton ID="editRequestorName" runat="server" /> 
       <h6 class="inlineH">Requestor's Name: <asp:Label ID="RequestorName_lbl" runat="server"></asp:Label></h6> 
      </div> 
     </asp:View> 
     <asp:View ID="RequestorNameEditView" runat="server"> 
      <div class="rightCol"> 
       <asp:LinkButton ID="updateRequestorName" runat="server" /> 
       <asp:LinkButton ID="cancelRequestorName" runat="server" /> 
       <h6 class="inlineH">Requestor's Name: </h6> 
       <asp:DropDownList ID="RequestorName_ddl" runat="server" ViewStateMode="Inherit" AutoPostBack="False" ></asp:DropDownList> 
       <asp:TextBox ID="RequestorName_cb" runat="server" EnableViewState="True" AutoPostBack="False"></asp:TextBox> 
       <button id="RequestorName_btn" type="button" class="toggle ui-button"></button> 
      </div> 
     </asp:View> 
    </asp:MultiView> 
    </ContentTemplate> 
    </asp:UpdatePanel> 

    <!-- "REQUIRED" indicator from javascript appended here --> 
    <h4 class="required">First Name</h4> 
    <asp:TextBox ID="tbFirstName" runat="server"></asp:TextBox> 
</asp:Content> 

回答

1

把這段代碼放在文檔上準備好。

$(document).ready(function() { 
    $("h4.required").append(" <span class=\"r\">*</span>"); 
}); 

然後,它會不會被調用時,你的更新面板負載。

+1

好吧,我會死的。你知道,很久以前,我就[onLoad]和'之間的區別準備好了這篇[優秀的文章](http://encosia.com/document-ready-and-pageload-are-not-the-same/)。準備好「,並猜測我錯過了關於UpdatePanel的每次更新時'onLoad'如何觸發的部分。非常棒,謝謝! :) – Chiramisu 2012-08-01 21:46:03