【问题标题】:How to get nested control's ClientID using JavaScript?如何使用 JavaScript 获取嵌套控件的 ClientID?
【发布时间】:2012-02-22 03:10:21
【问题描述】:

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

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

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

但假设 TextBox 是动态添加的,那么正确的做法是什么?

【问题讨论】:

标签: javascript asp.net


【解决方案1】:

您可以从基于 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

【讨论】:

  • 优秀的答案!使用它来查找子控件上的 asp.net 文本框的 id。传统的“”将不起作用,因为 ClientID 调用位于文本框不存在的控件(即子控件)上。这完美地解决了这个问题。
【解决方案2】:

试试这个 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();
    });

【讨论】:

    【解决方案3】:

    你可以试试这个

    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...
    });
    

    【讨论】:

      猜你喜欢
      • 2011-05-01
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 2012-07-12
      • 2011-01-30
      • 2017-06-24
      相关资源
      最近更新 更多