- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用 label
开发了我的用户控件和一个 textbox
(它们都来自 DevExpress
)。我有一个包含一些控件的页面,包括我的和 javascript block 。我意识到我必须使用 document.getElementById("<%=tbPosition.ClientID %>")
获得用户控制的访问权限。但是document.getElementById("<%=tbPosition.ClientID %>")
返回空值。
这是我的代码:1) Page.aspx
与用户控制
<script type="text/javascript" language="javascript">
var tb = document.getElementById("<%=tbPosition.ClientID %>"); // returns null
</script>
<head></head>
<body>
<rsoft:TextBoxControl ID="tbPosition" runat="server"
Title="Позиция" IsRequired="true"
ValidationMode="UnsignedInt" ClientIDMode="Static" />
</body>
2) 用户控件 'rsoft:TextBoxControl'
<table>
<tr>
<td class="styleFieldLabel">
<asp:Label ID="lblTitle" Text="" runat="server" Font-Bold="True" />
</td>
<td class="styleFieldInput">
<dx:ASPxTextBox ID="tbValue" runat="server" Width="500px"
ClientIDMode="Static" ClientInstanceName="tbValue">
<ClientSideEvents TextChanged="tbValue_TextChanged" />
<ValidationSettings SetFocusOnError="True" Display="Dynamic" RequiredField-ErrorText="Поле обязательно для заполнения"
ErrorTextPosition="Bottom" ValidateOnLeave="false" />
</dx:ASPxTextBox>
</td>
</tr>
有谁知道为什么document.getElementById("<%=tbPosition.TextBoxClientID %>")
变成 document.getElementById("tbPosition_tbValue")
,但是有一个 html 元素“tbPosition_tbValue_I”而不是“tbPosition_tbValue”?当我在用户控件中使用 DevExpress 控件时会发生这种情况。当我的控件不包含 devexpress 但通常是 <Asp:Textbox>
我没有这个问题。
最佳答案
当 ASP.NET 加载 UserControl 时,它只呈现 UserControl 的内容。
因此在您的情况下,它只会呈现 <table>
、行、单元格以及它们的内容。它会变成 document.getElementById("<%=tbPosition.ClientID %>")
进入document.getElementById("tbPosition")
它应该做的,因为这是你告诉它在运行时做的,但是tbPosition
当呈现为 html 时什么都没有。
您的选择是:在 UserControl 中编写 javascript 以访问这些控件,或者将您的服务器控件设置为 ClientIDMode="Static"
这将确保您可以将正确的控件 ID 放入您的 JavaScript。
var tb = document.getElementById('tbValue');
关于javascript - 无法通过外部页面上的 javascript 访问用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8181548/
我是一名优秀的程序员,十分优秀!