目前我正在编写的代码很混乱,目前我有一个aspx页面,其中包含一些javascript,并为ascx页面(不是当前的aspx)上的各种asp:button设置了一个工具提示,它看起来如下所示:
function setTooltips() {
$("[id*='btnSave']").mousemove(function (ev) { ButtonToolTip(ev, this, "Click to save"); });
$("[id*='btnClear']").mousemove(function (ev) { ButtonToolTip(ev, this, "Clear fields"); });
// more button tooltips set.
}
在ascx页面中,我也有一个asp:label。我正在创建一个javascript方法来根据这个标签的可见性显示警报。我在查找控件及其可见性时遇到了麻烦。
下面是asp标签代码的样子:
<asp:UpdatePanel runat="server" ID="upnl_alert" UpdateMode="Always">
<ContentTemplate>
<asp:Label ID="lbl_alert" runat="server" Text="There are several issues found.<br /><br />" Visible="false" />
</ContentTemplate>
</asp:UpdatePanel>
有没有办法检查asp标签的可见性,以便我可以实现刚才为警报编写的函数?
我试过:
if (document.getElementById('lbl_alert').style.visibility == "visible")
但我得到DOM异常-执行失败。
先谢谢你的帮助。
1条答案
按热度按时间ctehm74n1#
我有一个aspx页面,它有一些javascript并为ascx页面(不是当前的aspx)上的各种asp:button设置了一个工具提示。
嗯,不完全是!!!这里的背景很重要。
构建任何"用户"控件并将其放入任何页面?
标记,控件,JavaScript和ascx控件所拥有的其他东西?它被放置在您现有的aspx页面中。所以,不,控件不在其他页面中。
最好声明您有一个用户控件放到了一个现有的页面中,因此我想选择/使用/享受/隐藏/显示或对用户控件的一些按钮执行任何操作。
像所有的页面一样,大多数控件通常会接收当前页面类或命名空间作为前缀。请记住,如果您将用户控件拖到现有页面中2或4次会发生什么?那么按钮的"id"会变成什么?我的意思是,按钮不能具有相同的id,但多次放入用户控件是完全合法的,而且每次,它将把该标记拉入当前页面。
所以,假设一个超级简单的用户控件(ascx)是这样的:
此UC的代码隐藏(按钮点击)
好了,现在让我们创建一个新的空白页,并在上面拖放。
我们现在有了这个:
所以,自从我去过加州大学两次?
那么标签和按钮是怎么分开的呢?
简单:
每个控件"内部"的控件都以您给用户控件的"id"为前缀,然后是"_",然后是内部的控件。
因此,请注意关闭我使用的js代码:
所以,当我运行上面的代码时,我会得到:
因此,您需要在ascx页中所需的控件前面加上CURRENT页中使用的控件名的"id"!
这就是为什么我在这里说上下文很重要。ASCX页面并不重要,重要的是当前页面上使用的"UC"控件的名称,因为当这样的控件被拖放到现有页面中时,该UC控件的控件将以用户控件的"id"作为前缀。
所以,需要说明的是:
控件不在另一个页面中,这实际上只是设计时的一个考虑和视图。
在运行时,这些ascx控件会被拉入、注入和呈现在CURRENT页面中,因此,您可以/必须在ascx页面中的控件前面加上UC控件的"id",该UC控件在将控件"拖"到您喜欢的任何网页时使用。
用户控件非常棒,因为它们表示可重用的控件,但最终,此类控件呈现在当前页中。