如何使用JavaScript获取嵌套控件客户端ID?

时间:2012-02-22 03:10:22

标签: javascript asp.net

今天我接到了一个标题为的面试问题。

例如,更新面板包含一个Panel,Panel包含一个TextBox。

如何获取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%>')

  4. 但假设TextBox是动态添加的,但是这样做的正确方法是什么?

3 个答案:

答案 0 :(得分:2)

您可以根据id的结尾从jQuery选择器访问控件,如下例所示:

<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

答案 1 :(得分: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();
    });

答案 2 :(得分: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...
});