2012-02-06 73 views
1

我有一個用戶控件,一個下拉列表,它由許多組件控件組成。 主要的HtmlInputText將回傳一個輸入,但失去焦點它不會,我需要更新其他控件。 我添加了一個onblur函數,它被調用,但我只想回發時獲取焦點的元素不是用戶控件的一部分。如何確定usercontrol選擇的子項

如何確定選擇什麼以及它是否是控件的子項?

標記:

<%@ Register Assembly="MultiDropDown" Namespace="MultiDropDownLib" TagPrefix="MultiDropDownLib" %> 
    <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> 
    </asp:Content> 
    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
     <table style="width: 328px"> 
      <tr> 
       <td> 
        ProductClass 
       </td> 
       <td> 
        <MultiDropDownLib:MultiDropDown ID="MultiDropDown1" runat="server" TextBoxClass="textboxDD" 
         PostOnBlur="true" /> 
       </td> 
    ... 

和對照:

if (PostOnBlur) 
{ 
    txtItemList.Attributes.Add("onblur", string.Format("PostBack();", this.ClientID)); 
} 

在我想,以確定哪些具有焦點的回傳,如果它是控制的一部分。原控制來自:http://www.codeproject.com/Articles/219977/MultiDropDown-A-multiple-selection-Dropdown-contro

+0

你可以發佈你的asp.net頁面的標記嗎?目前還不確定項目的結構。謝謝。 – 2012-02-06 18:01:49

回答

1

這是一種與JavaScript和jQuery做到這一點:

<script language="javascript" type="text/javascript"> 
    $(document).ready(function() { 
     $(":input").focus(function() { 
      if (this.name.indexOf("$WebUserControl1") > -1) { 
       alert("It is child of my control."); 
      } 
     }); 
    }); 
</script> 

只是你的用戶控件的名稱替換$WebUserControl1。如果你願意,這也可以是動態的。基本上,usercontrol的所有子節點將包含父節點的名稱,因爲WebUserControls繼承自實現INamingContainer接口的TemplateControl。

祝你好運。

+0

感謝Hanlet,我是這個世界的新人,還沒有碰過jQuery。我猜這意味着將jQuery作爲控件的一部分,並且必須瞭解如果它已經是表單,版本等等的一部分,會發生什麼。 – GBrookman 2012-02-06 19:22:14

+0

沒問題GBrookman,你實際上需要在頁面中包含jQuery,而不是在控件中。你唯一需要確定的是獲得焦點的控件包含名稱中父項的一部分。 – 2012-02-06 19:26:36

+0

我有這樣的工作,但...我真正想要的是當用戶離開控制時發佈帖子。我試過使用:可見,但如果我點擊控制之外,但不是在另一個元素,它不起作用。我應該使用onmouseout還是有不同的焦點選擇損失。 – GBrookman 2012-02-07 23:11:36