如何确定usercontrol选中的子项

时间:2012-02-06 17:14:03

标签: javascript asp.net

我有一个用户控件,一个下拉列表,它由许多组件控件组成。 主要的HtmlInputText会回传一个输入,但是失去焦点时它不会,我需要更新其他控件。 我添加了一个onblur函数,它被调用,但我只想在获得焦点的元素不是用户控件的一部分时回发。

如何确定所选内容以及它是否为控件的子项?

标记:

    <%@ 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));
}

在PostBack中,我想确定什么是焦点,以及它是否是控件的一部分。原始控件来自:http://www.codeproject.com/Articles/219977/MultiDropDown-A-multiple-selection-Dropdown-contro

1 个答案:

答案 0 :(得分: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。

祝你好运。