0

感谢您花一点时间来看看这个。我知道对你们中的大多数人来说,编写客户端脚本很简单。无论如何,我只想在顶部显示一条消息,提醒用户他们的点击已注册并禁用该按钮。

<----代码如下---->

<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>

4

3 回答 3

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>
于 2013-09-26T22:42:04.773 回答
0

ID 可能不是您所期望的;ASP 用它们的容器(如 )包装 ID Container_ActiveImageButton。怎么样:

<script>
  function archiveIt(){
    var aib = document.getElementById('<%= this.ArchiveImageButton.ClientID; %>');
    aib.enabled = false;
  }
</script>

或者,您可以在控件上玩ClientIDMode并制作它Static

于 2013-09-26T22:34:12.063 回答
0

您需要在两个控件上都设置为ClientIDModetoStatic以避免在他们的 ID 上有额外的东西

于 2013-09-26T22:35:36.420 回答