2012-08-01 5 views
1

편집 가능한 필드와 여러 필수 필드가있는 페이지가 있습니다. 문제는 버튼을 클릭하여 변경 사항을 편집 할 수있는 입력란을 활성화하거나 해당 변경 사항을 적용/취소 할 때 자바 스크립트가 다시 실행되어 필수 입력란에 다른 필수 입력란을 추가한다는 것입니다. 첫 번째로드에만 표시기를 추가하고 인터페이스에서 클릭 한 버튼의 영향을받지 않도록합니다. 이것을 어떻게 할 수 있습니까? 내 Javascript "if"문에 대한 올바른 조건이 필요하지만 그 상황이 무엇인지 모릅니다. 나는 그것을 연구하고 말랐다.page UpdatePanel 내에서 여러 번로드 이벤트 발생

내 마크 업입니다. 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'와'onLoad'의 차이점에 대해이 훌륭한 기사를 준비했습니다. (http://encosia.com/document-ready-and-pageload-are-not-the-same/). 나는'UpdatePanel의 모든 업데이트에'onLoad'가 어떻게 발생하는지에 대해 놓쳤다. 좋은 캐치, 고마워! :) – Chiramisu

관련 문제