感谢您花一点时间来看看这个。我知道大多数客户端脚本这很容易。无论如何,我只想在顶部发出一条消息,警告用户他们的点击已被注册并禁用该按钮。
< ---- CODE BELOW ---->
<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="content">
<div>
<asp:TextBox BorderStyle="None" Font-Bold="True" Height="15" Width="300"
ForeColor="Green" runat="server" ID="MessageBox" Visible="False" Text="Archiving compliance results..."></asp:TextBox>
</div>
<table cellpadding="0" cellspacing="0">
<Table STUFF!> ....
<span>
<asp:ImageButton ID="ArchiveImageButton" runat="server" AlternateText="Archive Compliance"
ImageUrl="~/images/Icons/24/452-bank.gif" OnClientClick="archiveIt()" OnClick="btnArchive_Click" ToolTip="Archive compliance results" />
</span>
</Table STUFF!>
</table>
<script language="javascript" type="text/javascript">
function archiveIt() {
window.ArchiveImageButton.enabled = false;
window.MessageBox.visible = true;
}
</script>
答案 0 :(得分:1)
有两个问题。首先,您需要使用getElementById
来获取元素。 window.ElementId
无效:
var element = document.getElementById('myId');
其次,您的控件具有服务器端ID 。当它们呈现给客户端时,ID会有所不同。有两种方法可以解决这个问题。一,获得ClientID
属性:
var element = document.getElementById('<%= MyControl.ClientID %>');
或者两个,在控件上将ClientIDMode
设置为静态:
<asp:TextBox ID="MyTextBox" ClientIDMode="Static" runat="Server" />
然后你可以使用:
var element = document.getElementById('MyTextBox');
另请注意,<input>
控件没有visible
属性。你可能想要.style.display
。
因此,您的代码应该类似于:
<script language="javascript" type="text/javascript">
function archiveIt() {
document.getElementById('<%= ArchiveImageButton.ClientID %>').enabled = false;
document.getElementById('<%= MessageBox.ClientID %>').style.display = 'inherit';
}
</script>
答案 1 :(得分:0)
ID可能不是您所期望的; ASP用其容器包装ID(如Container_ActiveImageButton
)。怎么样:
<script>
function archiveIt(){
var aib = document.getElementById('<%= this.ArchiveImageButton.ClientID; %>');
aib.enabled = false;
}
</script>
或者,您可以在控件上使用ClientIDMode
并将其设为Static
。
答案 2 :(得分:0)
您需要在两个控件上设置ClientIDMode
到Static
,以避免在其ID上添加额外内容