2012-02-22 16 views
0

今天我收到了一个标题为面试的问题。如何使用JavaScript获取嵌套控件的ClientID?

例如,更新面板包含面板,面板包含文本框。

如何获取TextBox ClientID?

唯一我能想到的是:

  1. 我们可以预测在TextBox的ClientID取决于ClientID的模式,使用的getElementById。

    getElementByID('ct100$MasterPageBody$ct100$UpdatePanelID$ct100$PanelID$ct100$TextBoxID')

  2. 我们可以使用JavaScript来解析HTML,解析输入控制成阵列。

    即假设我们知道我们想要找到第一个UpdatePanel的第一个Panel的第一个TextBox。 我们可以从myUpdatePanel [0]找到它,然后让它的孩子使用JavaScript? (我只是猜测这里)

  3. getElementByID('<%=MyTextBox.ClientID%>')

不过,假设该文本框添加动态的,但什么是这样做的正确方法?

+0

你也可以尝试这为更多的使用嵌套控件: http://stackoverflow.com/questions/5275693/find-nested-checkboxlis t-in-repeater-control-with-jquery – 2012-11-25 22:45:10

回答

2

您可以从一个jQuery选择基于喜欢这里的例子中,ID结束访问控制:

<asp:CheckBox ID="chkEnable" Text="My Checkbox" runat="server" /> 
<script type="text/javascript"> 
    $(function() { 
     var checked = $("input[id$=chkEnable]").attr("checked"); 

    }); 
</script> 

这里有一个确切的事情了一篇文章: http://weblogs.asp.net/joelvarty/archive/2009/02/09/jquery-get-a-handle-on-a-server-element-in-javascript-without-using-lt-elem-clientid-gt.aspx

+0

优秀的答案!用它来查找子控件上的一个asp.net文本框的id。传统的“<%= textBox.ClientID%>”将不起作用,因为ClientID调用位于文本框不存在的控件上(即子控件)。这很好地解决了这个问题。 – Kaos 2013-02-25 18:07:01

0

试试这个jQuery

上首先文本框

设置焦点的
$("input[type='text']:first") 

实施例

$(document).ready(function() { 
     // focus on the first text input field in the first field on the page 
     $("input[type='text']:first", document.forms[0]).focus(); 
    }); 
0

你可以试试这个

var $textboxes = $("input[type='text']")

现在,$textboxes是代表页面上的所有文本框的jQuery对象的数组,所以你可以做这样的事情

$.each($textboxes, function(index, obj) { 
    // do something to check if this is the textbox that you are looking for... 
}); 
相关问题