我有一个用户控件,一个下拉列表,它由许多组件控件组成。 主要的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
答案 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。